打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MFC Ribbon框架禁止默认的弹出式菜单ContextMenu


 使用MFC Ribbon的框架,在OutLookBar上点击鼠标右键,往往弹出一个系统默认的菜单,如下图:我尝试了多种方法都不能将其禁止。

经过跟踪调试,当按下鼠标右键时,首先响应的Windows消息是WM_CONTEXTMENU,而不是WM_RBUTTONDOWN。

可以在创建OutlookBar的地方设置断点,单步跟踪进入MFC代码。

这样的目的是,VisualStudio帮我们打开CPP文件(否则记不住.h对应的.cpp),进入了afxdockablepane.cpp文件,在

  1. void CDockablePane::OnContextMenu(CWnd* pWnd, CPoint point)  
  2. {  
  3.     if (IsTracked())  
  4.     {  
  5.         return;  
  6.     }  
  7.   
  8.     if (m_bCaptionButtonsCaptured)  
  9.     {  
  10.         StopCaptionButtonsTracking();  
  11.     }  
  12.   
  13.     CPane::OnContextMenu(pWnd, point);  
  14. }  


继续跟踪到达:

  1. void CPane::OnContextMenu(CWnd* /*pWnd*/, CPoint point)  
  2. {  
  3.     if (CMFCPopupMenu::GetActiveMenu() != NULL)  
  4.     {  
  5.         return;  
  6.     }  
  7.   
  8.     if (!CMFCToolBar::IsCustomizeMode())  
  9.     {  
  10.         if (OnShowControlBarMenu(point))  
  11.         {  
  12.             return;  
  13.         }  
  14.   
  15.         CFrameWnd* pParentFrame = DYNAMIC_DOWNCAST(CFrameWnd, m_pDockSite);  
  16.         if (pParentFrame == NULL)  
  17.         {  
  18.             pParentFrame = AFXGetTopLevelFrame(this);  
  19.         }  
  20.   
  21.         if (pParentFrame != NULL)  
  22.         {  
  23.             ASSERT_VALID(pParentFrame);  
  24.   
  25.             OnPaneContextMenu(pParentFrame, point);  
  26.         }  
  27.     }  
  28. }  

如果将CMFCToolBar::IsCustomizeModel()置为TRUE,则不再弹出菜单,因此在创建OutlookBar后,立刻将该标志 置为TRUE。如下:

  1. DWORD style = WS_CHILD | WS_VISIBLE | CBRS_LEFT/* | CBRS_ALIGN_ANY*/;  
  2.     if (!m_wndOutlookBar.Create(strTemp, this, CRect(0, 0, 250, 20000), 0, style))  
  3.     {  
  4.         return FALSE; // fail to create  
  5.     }  
  6.   
  7.     //禁止系统默认的弹出菜单  
  8.     CMFCToolBar::SetCustomizeMode(TRUE);  


至此,不再弹出ContexMenu

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
鼠标右键没有“转换为Adobe PDF”的菜单
MFC开发中工具栏自定义图标问题
VC 2010+MFC:CMFCToolBar和CMFCMenuBar的字体大小修改
如何把ToolStripMenuItem的副本选入上下文菜单。。。?
如何解决网页不让复制的办法
网页内容无法选中并复制怎么办?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服