MFC--右键菜单
1.添加一个菜单资源
2.在资源界面中输入菜单的各个指令项的文字内容,并且设置对应的ID号
3.在对话框的类视图中,选择“属性”-“消息”,重写对消息WM_CONTEXTMENU的响应函数
选择属性
4.代码
void CyoujiancaidanDlg::OnContextMenu(CWnd* pWnd, CPoint point) { //右击窗口时的消息处理函数 CMenu menu; menu.LoadMenu(IDR_MENU1); CMenu* pMenu; pMenu = menu.GetSubMenu(0);// 获取子菜单 //参数:子菜单索引 //获取“省市”菜单指针。菜单中可以有多个子菜单,但是只能显示一个子菜单,注意:这个子菜单的文本是不会显示的 pMenu->EnableMenuItem(ID_32778, MF_BYCOMMAND | MF_ENABLED);//启用、禁用或灰显指定的菜单项 //参数1:HMENU 菜单的句柄 //参数2uIDEnableItem:UINT 菜单ID //参数3uEnable:UINT 控制 uIDEnableItem 参数的解释,并指示菜单项是启用、禁用还是灰显。 此参数必须是以下值的组合 // MF_BYCOMMAND=0x00000000L 指示 uIDEnableItem 提供菜单项的标识符。 如果未指定 MF_BYCOMMAND 或 MF_BYPOSITION 标志, 则MF_BYCOMMAND 标志为默认标志 // MF_BYPOSITION=0x00000400L 指示 uIDEnableItem 提供菜单项的从零开始的相对位置 // MF_DISABLED=0x00000002L 指示菜单项已禁用,但未灰显,因此无法选择它 // MF_ENABLED=0x00000000L 指示菜单项已启用并从灰显状态还原,以便可以选择菜单项 // MF_GRAYED =0x00000001L 指示菜单项已禁用并灰显,以便无法选择菜单项 //返回值:BOOL 返回值指定菜单项的上一状态, (它是 MF_DISABLED、 MF_ENABLED或 MF_GRAYED) 。 如果菜单项不存在,则返回值为 -1 //启用“北京”菜单 pMenu->EnableMenuItem(ID_32779, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); //禁用“上海”菜单 pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);//显示菜单 /* 在指定位置显示快捷菜单,并跟踪菜单上的项目选择。 快捷菜单可在屏幕上的任意位置显示 参数1:uFlags:UINT 以下标志之一指定函数水平定位快捷菜单的方式 TPM_CENTERALIGN=0x0004L 将快捷菜单水平相对于 x 参数指定的坐标居中 TPM_LEFTALIGN=0x0000L 定位快捷菜单,使其左侧与 x 参数指定的坐标对齐 TPM_RIGHTALIGN=0x0008L 定位快捷菜单,使其右侧与 x 参数指定的坐标对齐 以下标志之一指定函数如何垂直定位快捷菜单 TPM_BOTTOMALIGN=0x0020L 定位快捷菜单,使其底部与 y 参数指定的坐标对齐 TPM_TOPALIGN=0x0000L 定位快捷菜单,使其顶部与 y 参数指定的坐标对齐 TPM_VCENTERALIGN=0x0010L 将快捷菜单垂直相对于 y 参数指定的坐标居中 参数2:int 快捷菜单的水平位置,以屏幕坐标为单位 参数3:int 快捷菜单的垂直位置,以屏幕坐标为单位 参数4:拥有快捷菜单的窗口的句柄。 此窗口从菜单中接收所有消息。 在函数返回之前,该窗口不会从菜单中收到 WM_COMMAND 消息。 如果在 uFlags 参数中指定TPM_NONOTIFY,函数不会将消息发送到 hWnd 标识的窗口。 但是,仍必须在 hWnd 中传递窗口句柄。 它可以是应用程序的任何窗口句柄 返回值:BOOL 如果在 uFlags 参数中指定TPM_RETURNCMD,则返回值是用户选择的项的菜单项标识符。 如果用户取消菜单而不进行选择,或者发生错误,则返回值为零 */ menu.DestroyMenu(); //销毁指定的菜单并释放菜单占用的任何内存 }
实例工程下载:
链接:https://pan.baidu.com/s/1_zRoGgoz-1lkM0jZ7c8PsQ
提取码:6666
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2022-03-12 halcon-edges_image计算边缘
2022-03-12 halcon-sobel_dir计算边缘
2022-03-12 halcon-sobel_amp计算边缘
2022-03-12 halcon-prewitt_amp计算边缘
2022-03-12 halcon-roberts计算边缘
2019-03-12 matplotlib-2D绘图库-面向对象