vc++中添加上下文菜单的方法

来源:互联网 发布:后会无期 知乎 编辑:程序博客网 时间:2024/05/22 11:41

首先要在在文件首定义菜单项:

#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()

 

所有的工作完成了!