关于SubMenu右键弹出菜单问题

本文介绍了在C++编程中遇到的右键弹出子菜单的常见问题,通过绑定WM_CONTEXTMENU处理函数并使用TrackPopupMenu()解决弹出对话框的错误。作者分享了对子菜单的理解,指出需要将菜单项设置为“弹出”才能显示子菜单,并提供了解决右键菜单可用性问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始在网上找了几个,都是一样的,就是在RButtonDown()里实现右键弹出菜单,没有反应,可能也是我当时还不了解自己对subMenu的误解,右键点了几次之后,就自动退出了(知道了的话,再回来更新),后来找到了一个不一样的代码,就是在类向导中绑定WM_CONTEXTMENU处理函数,在函数中写了如下代码:
void CWangLiuLin190304View::OnContextMenu(CWnd* pWnd, CPoint point) { // TODO: Add your message handler code here { CRect rect;//定义矩形区域 CMenu menu; VERIFY(menu.LoadMenu(IDR_MENU2)); CMenu* pPopup=menu.GetSubMenu(0); ASSERT(pPopup!=NULL); pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,this); } }
我以为这样就可以了,谁知道运行的时候点击右键,没弹出菜单,弹出个对话框,说我某行有个错误,点击工具栏编辑->转到->输入看到的行数,一定位,发现是这行代码有错误ASSERT(pPopup!=NULL); ,就是说,并没有获得我的标号为0的子菜单,想了想,感觉,可能是我不知道什么是子菜单
哪位大神能告诉我一下,怎么在编辑的时候裁剪,不用另存为,如果有这个功能的话,在这里先谢谢了
这个“配置”菜单项,并不是子菜单,双击这个配置,会出现属性,把“弹出”勾选,就会出现图上的小三角,点击小三角再添加的菜单项才是子菜单
大概就是这样,一点点心得。

------------------------------------------------------------- 更新 ----------------------------------------------------------

又被右键弹出菜单可用性折磨,发现真正有用的是,在Track之前用EnableMenuItem()设置一下可用性就行,TrackPopupMenu()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值