MFC Ribbon下禁用狀態列CMyRibbonBar右鍵,快速訪問工具(CMFCRibbonQuickAccessToolBar),關閉ApplicationButton響應
阿新 • • 發佈:2019-02-06
1、禁用CMyRibbonBar右鍵
新建CMyRibbonBar 類,繼承CMFCRibbonBar,過載OnShowRibbonContextMenu。
//遮蔽CMFCRibbonBar中的右鍵選單,過載OnShowRibbonContextMenu(); class CMyRibbonBar : public CMFCRibbonBar { protected: virtual BOOL OnShowRibbonContextMenu(CWnd* pWnd, int x, int y, CMFCRibbonBaseElement* pHit) { return FALSE; } };
在MainFrm.h中定義
CMyRibbonBar m_wndRibbonBar;
使用CMyRibbonBar 類的物件,同時過載OnShowRibbonContextMenu函式,遮蔽(禁用、劫取)滑鼠在CMFCRibbonBar上的右鍵相應函式。
2、去除快速訪問工具(CMFCRibbonQuickAccessToolBar)
在MainFrm.cpp中的OnCreate下新增:
m_wndRibbonBar.Create(this, WS_CHILD | WS_VISIBLE | (CBRS_TOP)); m_wndRibbonBar.LoadFromResource(IDR_RIBBON); //隱藏快速訪問…… CMFCRibbonQuickAccessToolBar* pQAToolbar = m_wndRibbonBar.GetQuickAccessToolbar(); pQAToolbar->RemoveAll(); //隱藏快速訪問……
3、關閉ApplicationButton響應
新建CMyRibbonApplicationButton類,繼承CMFCRibbonApplicationButton,過載OnLButtonDown和OnLButtonDblClk。
//為了禁用CMFCRibbonApplicationButton的單擊和雙擊事件 class CMyRibbonApplicationButton : public CMFCRibbonApplicationButton { public: CMyRibbonApplicationButton() { }; //~CMyRibbonApplicationButton(); protected: virtual void OnLButtonDown(CPoint point) { return; } virtual void OnLButtonDblClk(CPoint point) { return; } };
在MainFrm.cpp中的OnCreate下新增:
m_wndRibbonBar.Create(this, WS_CHILD | WS_VISIBLE | (CBRS_TOP));
m_wndRibbonBar.LoadFromResource(IDR_RIBBON);
//隱藏快速訪問
CMFCRibbonQuickAccessToolBar* pQAToolbar = m_wndRibbonBar.GetQuickAccessToolbar();
pQAToolbar->RemoveAll();
//關閉ApplicationButton響應,劫取滑鼠單、雙擊訊息
CMFCRibbonApplicationButton* pMainButton = m_wndRibbonBar.GetApplicationButton();
delete pMainButton; //刪除框架自動生成的RibbonApplicationButton
CMyRibbonApplicationButton* pMyMainButton = new CMyRibbonApplicationButton();
pMyMainButton->SetImage(IDB_MAIN);
m_wndRibbonBar.SetApplicationButton(pMyMainButton, CSize(45, 45));
本文所講方法,都是新建繼承MFC類,過載訊息相應函式,達到遮蔽或劫取訊息的目的。本文三種方法親測可行。