首先要在在文件首定义菜单项:
#define
ID_MENU_EDIT 5001
#define
ID_MENU_DELETE 5002
然后添加对话框的WM_CONTEXTMENU消息函数,函数内容为:
CMenu menuPopup;
if
(menuPopup.CreatePopupMenu())
...
{
menuPopup.AppendMenu(MF_STRING,ID_MENU_EDIT,"修改(&E)");
menuPopup.AppendMenu(MF_STRING,ID_MENU_DELETE,"删除(&D)");
menuPopup.TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
}
然后定义菜单相应函数,
1,在头文件中添加函数定义语句:
// Generated message map functions
// {{AFX_MSG(CAdo2Dlg)
virtual
BOOL OnInitDialog();
afx_msg void onInfoEdit();
//
这个是编辑菜单的响应函数
afx_msg void
onInfoDelete();
//
这个是删除菜单的响应函数
afx_msg void
OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButton1();
afx_msg void OnButton2();
afx_msg void OnRdblclkList1(NMHDR
*
pNMHDR, LRESULT
*
pResult);
afx_msg void OnDblclkList1(NMHDR
*
pNMHDR, LRESULT
*
pResult);
afx_msg void OnContextMenu(CWnd
*
pWnd, CPoint point);
// }}AFX_MSG
DECLARE_MESSAGE_MAP()
2,在cpp文件中添加函数体:
void CAdo2Dlg::OnInfoEdit()
... {
AfxMessageBox("edit");
}
void CAdo2Dlg::OnInfoDelete()
... {
AfxMessageBox("delete");
}
3,然后在cpp文件中添加影射:
BEGIN_MESSAGE_MAP(CAdo2Dlg, CDialog)
// {{AFX_MSG_MAP(CAdo2Dlg)
ON_COMMAND(ID_MENU_EDIT, OnInfoEdit)
ON_COMMAND(ID_MENU_DELETE, OnInfoDelete)
// }}AFX_MSG_MAP
END_MESSAGE_MAP()
所有的工作完成了!