MFC右键功能的实现
一、准备右键的功能栏
- 新建一个menu,如下:
- 在菜单栏添加右键需要的功能,我这里添加insert和delete如下:
- 修改对应的属性特征(主要是ID),这个主要是为了后面方便使用,到这里准备工作就做完了。
二、右键处理的函数
- 首先我们需要在使用右键的dialog中的.h文件中进行如下定义:
public:
//右键功能
//右键菜单响应映射函数
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
//insert的触发函数
afx_msg void OnMenuitem1();
//delete的触发函数
afx_msg void OnMenuitem2();
- 然后我们需要在使用右键的dialog中的.cpp文件中进行如下实现:
void AddSigDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
//IDR_MENU3就是新建的menu的ID
menu.LoadMenu(IDR_MENU3);
CMenu* pMenu;
pMenu = menu.GetSubMenu(0);
//注释的两行是不激活该按钮的代码
//pMenu->EnableMenuItem(ID_B, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
//pMenu->EnableMenuItem(ID_C, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
pMenu->Detach();
menu.DestroyMenu();
}
void AddSigDlg::OnMenuitem1()
{
//可以自己添加一个消息框来验证一下
//do nothing;
}
void AddSigDlg::OnMenuitem2()
{
//do nothing;
}
三、添加映射消息
在使用右键的dialog中的.cpp文件中添加如下映射:
ON_WM_CONTEXTMENU()//右键菜单响应消息映射
ON_COMMAND(ID_INSERT, &AddSigDlg::OnMenuitem1)//ID_MENUITEM4消息映射
ON_COMMAND(ID_DELETE, &AddSigDlg::OnMenuitem2)//ID_MENUITEM4消息映射
- 显示效果如下: