0
点赞
收藏
分享

微信扫一扫

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


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


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

所有的工作完成了!

举报

相关推荐

0 条评论