MFC实战篇——添加鼠标右键响应菜单

news/2024/11/30 0:34:15/

文章目录

  • 一、新建MFC对话框项目
  • 二、添加菜单资源
  • 三、添加右键响应函数
    • 3.1 方法1:WM_CONTEXTMENU响应函数
    • 3.2 方法2:WM_RButtonDown响应函数
  • 四、添加菜单响应函数
  • 五、测试
  • 六、升级版

在这里插入图片描述

一、新建MFC对话框项目


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、添加菜单资源

添加一个主菜单和3个子菜单。


在这里插入图片描述
三个子菜单的ID分别为:


在这里插入图片描述

三、添加右键响应函数

3.1 方法1:WM_CONTEXTMENU响应函数

在类视图中为对话框添加消息WM_CONTEXTMENU的响应函数。
在这里插入图片描述
在响应函数中添加代码,加载指定的菜单:

void CAddRightButtonMenuDlg::OnContextMenu(CWnd* pWnd, CPoint point)
{// TODO: 在此处添加消息处理程序代码//从资源文件中加载指定ID的菜单CMenu menu;menu.LoadMenu(IDR_MENU1);//获得指定ID菜单的所有子菜单CMenu* pMenu;pMenu = menu.GetSubMenu(0);//EnableMenuItem的意思是允许、禁止或变灰指定的菜单条目。//为每一个子菜单设置状态pMenu->EnableMenuItem(ID_32771, MF_BYCOMMAND | MF_ENABLED);//激活转态pMenu->EnableMenuItem(ID_32772, MF_BYCOMMAND | MF_ENABLED);//激活转态pMenu->EnableMenuItem(ID_32773, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);//禁用状态,灰色//在鼠标点击处的位置加载出来菜单项pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);pMenu->Detach();menu.DestroyMenu();}

3.2 方法2:WM_RButtonDown响应函数

在类视图中为对话框添加消息WM_RButtonDown的响应函数。

void CAddRightButtonMenuDlg::OnRButtonDown(UINT nFlags, CPoint point)
{// TODO: 在此添加消息处理程序代码和/或调用默认值CMenu menu;menu.LoadMenu(IDR_MENU1);CMenu* pPopup = menu.GetSubMenu(0);CPoint pointPos;GetCursorPos(&pointPos);pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pointPos.x, pointPos.y, this);CDialogEx::OnRButtonDown(nFlags, pointPos);
}

以上两种方式任选一种即可

四、添加菜单响应函数

为每一个子菜单添加菜单响应函数:
在这里插入图片描述
在生成的代码中添加响应的动作:

void CAddRightButtonMenuDlg::On32771()
{// TODO: 在此添加命令处理程序代码MessageBox(L"Hello,WaitFoF");
}void CAddRightButtonMenuDlg::On32772()
{// TODO: 在此添加命令处理程序代码MessageBox(L"Hi,WaitFoF");
}void CAddRightButtonMenuDlg::On32773()
{// TODO: 在此添加命令处理程序代码MessageBox(L"I want to eat a apple.");
}

五、测试

在这里插入图片描述

六、升级版

为子菜单Hello添加3个子菜单:
在这里插入图片描述
为子菜单Hi添加一个子菜单:How old are you?
在这里插入图片描述
为子菜单Apple添加2个子菜单:big和small
在这里插入图片描述
为每一个菜单添加响应函数:
在这里插入图片描述
添加响应内容:

void CAddRightButtonMenuDlg::OnHelloWaitfof()
{// TODO: 在此添加命令处理程序代码MessageBox(L"Hello   Waitfof.");
}void CAddRightButtonMenuDlg::OnHelloTom()
{// TODO: 在此添加命令处理程序代码MessageBox(L"Hello   Tom.");
}void CAddRightButtonMenuDlg::OnHelloSalay()
{// TODO: 在此添加命令处理程序代码MessageBox(L"Hello   Salay.");
}void CAddRightButtonMenuDlg::OnHiH()
{// TODO: 在此添加命令处理程序代码MessageBox(L"怎么老是你?");
}void CAddRightButtonMenuDlg::OnAppleBig()
{// TODO: 在此添加命令处理程序代码MessageBox(L"大苹果");
}void CAddRightButtonMenuDlg::OnAppleSmall()
{// TODO: 在此添加命令处理程序代码MessageBox(L"小苹果");
}

此时的右键右键响应函数选择的是WM_RBUTTONDOWN。
在这里插入图片描述
若屏蔽WM_RBUTTONDOWN,选择WM_CONTEXTMENU:
你会发现效果相同,设置的Apple禁用无效。

代码地址:AddRightButtonMenu.rar


http://www.ppmy.cn/news/708350.html

相关文章

ubuntu右键点击没有新建文档_苹果鼠标右键无法新建txt文档?iRightMouse :超级右键鼠标辅助工具...

苹果鼠标右键无法新建txt文档?iRightMouse mac版是Macos上一款超级右键鼠标辅助工具,弥补了苹果右键功能较弱的短板,为mac增加右键新建菜单,苹果右键可以新建TXT,为用户丰富苹果右键功能。 iRightMouse for Mac(超级右…

苹果鼠标右键怎么按_如何在Mac上使用多点触控手势?苹果MacOSX系统常用多点触摸板操作手势教程...

刚开始使用Mac的用户可能不太会使用Mac多点触控手势,了解苹果MacOSX系统常用多点触摸板操作手势能够让用户更好的使用Mac电脑,那么那么如何在Mac上使用多点触控手势?下面带来详细的MacOSX系统常用多点触摸板操作手势教程,一起来了解一下吧! 使用多点触控触控板或妙控鼠标,…

苹果鼠标右键怎么按_精选分享,你不了解的这些鼠标增强神器

如何才能更好的发挥mac鼠标的神奇功能,小编今天整理了一些能够帮您事半功倍的鼠标辅助器,高亮显示鼠标指针、撤消/重做支持等功能不再话下,一起来看看吧~ 精选分享,你不了解的这些鼠标增强神器! Presentify for mac(鼠…

苹果鼠标右键怎么按_UG经验技巧案例17把UG命令设置到Shift+Ctrl+鼠标的左、中、右三键及右键长、按右键的方法...

客服微信:ugnx002 1、点击了解-VIP永久铂金会员 2、点击了解-UG经典编程刀路100例 UG经验技巧案例17--把UG命令设置到Shift+Ctrl+鼠标的左、中、右三键及右键长、按右键的方法 在UG快捷键使用中,我们有一个叫做推断式的用法,具体是按住Shift+Ctrl+鼠标的左键、中键、右键然后…

46 # 可读流 readStream

上一节实现了文件拷贝功能,其中的读和写的操作都耦合在一起了,能不能实现一个方法,可以用一行搞定,这里涉及到流里的 pipe 流 流是有方向的,先读出来再写,node 中实现了流的模块(stream&#…

Photoshop 2022下缩放和平移图像

欢迎观看 Photoshop 入门教程,您将通过这些教程学习 Photoshop 2022的基本工具和使用技巧。小编将为您介绍 Photoshop 工作区,并向您展示缩放和平移图像的使用方法。 了解如何缩放和平移图像 更改图像的视图。 在 Photoshop 中处理图像时&#xff0c…

3.PS 缩小放大、移动、选区工具

一:抓手工具 1.PS的左下角能够查看像素的大小。左下角的百分号能够缩小放大 2.抓手工具(快捷键H) 摁住空格键可以暂时切换为抓手工具。 3.并排多个图像:窗口菜单---排列中选择 上边可以设置是否同时滚动两幅图片 除此之外&…