首先要在在文件首定义菜单项:
#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()
所有的工作完成了!