MFC OnContextMenu

MFC OnContextMenu版权声明:www.gudianxiaoshuo.com原创文章版权古典小说网         WM_CONTEXTMENU消息用来响应鼠标右键消息,它响应的不是鼠标右键按下消息,也不是鼠标右键弹起消息而是鼠标右键依次按下弹起后触发的消息。          因此,若程序还响应了鼠标右键按下的消息OnRButtonDown,且在此响应函数中有模特对话



 

         WM_CONTEXTMENU消息 用来响应鼠标右键消息, 它响应的不是鼠标右键按下消息,也不是鼠标右键弹起消息

而是鼠标右键 依次按下弹起后触发的消息。

 

         因此,若程序还响应了鼠标右键按下的消息OnRButtonDown,且在此响应函数中有模特对话框出现的话,则不会响应WM_CONTEXTMENU消息。

         比如,有AfxMessageBox(L”Right Down”); 模特对话框出现在右键按下响应函数中, 则关闭此模特对话框后,不在响应右键菜单消息。

 

         原因在于:

         右键菜单 是在右键依次按下弹起时才被触发的。

        右键按下, 模特对话框产生时,消息只被发送到了模特对话框,因此,鼠标弹起消息未被发送到主窗口,因此,不会响应右键菜单消息。

 

        但是,如果在右键弹起响应函数OnRButtonUp中响应模特对话框消息的话, 右键菜单消息 不会被影响。

        原因是: 此时鼠标按下、弹起消息均已被发送到了主窗口,因此程序在关闭模特对话框后,仍会响应右键菜单消息。

 

  1. OnContextMenu(CWnd* pWnd, CPoint point)  
  2. {  
  3.     CPoint pt=point;  
  4.     CMenu menu;  
  5.     CMenu* PopupMenu=NULL;  
  6.   
  7.     ScreenToClient(&pt);  
  8.   
  9.     //加载菜单  
  10.     menu.LoadMenu(IDR_IMAGEVIEW);  
  11.   
  12.     //子菜单项  
  13.     //右键点击 弹出此子菜单项  
  14.     PopupMenu=menu.GetSubMenu(3);  
  15.     PopupMenu->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN,point.x,point.y,this);  
  16. }  
MFC OnContextMenu

OnContextMenu(CWnd* pWnd, CPoint point)
{
	CPoint pt=point;
	CMenu menu;
	CMenu* PopupMenu=NULL;

	ScreenToClient(&pt);

	//加载菜单
	menu.LoadMenu(IDR_IMAGEVIEW);

	//子菜单项
	//右键点击 弹出此子菜单项
	PopupMenu=menu.GetSubMenu(3);
	PopupMenu->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN,point.x,point.y,this);
}

 

 参考资料:

http://topic.csdn.net/t/20061114/18/5157800.html 

今天的文章MFC OnContextMenu分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/4842.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注