在我们的程序中,经常需要添加右键菜单消息的响应,之前的时候工作中经常用,前两天又有朋友问到了,所以小编就总结了这篇简短的博文与大家分享
首先我们要在自己的工程里添加菜单资源(这一步要是不知道那就自X算了),记得一定要修改菜单ID哦(小工程问题不大,但是要养成好的习惯),修改完菜单ID我们就开始创建我们的菜单项,菜单项ID也要修改哦,第一步就算是做完了,接下来我们要在我们想要弹出菜单的那个视图所绑定的类里面添加一个CMenu成员变量(用来代表菜单)
然后我们转到这个类的OninitDialog();函数里面,这是个虚函数,没有的,在类向导里面重载父类的initDialog();就可以了,在里面我们只需要添加类似这样的一段代码就可以了
///
/// \c_menuPopup 我们定义的CMenu成员变量
/// \IDR_MENU1 资源里面的菜单ID
c_menuPopup.LoadMenuW(IDR_MENU1);
OK,现在我们只需要做最后一步了,那就是处理RButtonDown或者RButtonUp消息,然后在消息处理函数里面添加这样的代码就可以了
ClientToScreen( &point );
c_menuPopup.GetSubMenu(0)->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x,point.y,this );//在鼠标位置弹出菜单
这样我们就大功告成了,哈哈