MFC之右键功能的实现

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消息映射
  • 显示效果如下:
发布了84 篇原创文章 · 获赞 63 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/wsq119/article/details/103168392