MFCのリボンのカテゴリイベントの追加方法
2016年9月28日:MFC
MFCのリボンでカテゴリを変えた際のイベントを取得したい場合があるかと思います。単純にリボンからイベントを生成できたらいいのですが、残念ながらできません。ここでは、カテゴリ切り替えの際に、イベントを発生させる方法を紹介します。
MainFrm.hにカテゴリ変更時のメソッドを宣言する
まず、MainFrm.hに以下のメソッドを記述します。これはカテゴリ変更時に呼び出されるイベントです。「生成されたメッセージの割り当て関数」のprotected:以下にいれておきましょう。
LPARAM CMainFrame::OnRibbonCategoryChanged(WPARAM wp, LPARAM lp);
MainFrm.cppにイベントメソッドを記述する
次にOnRibbonCategoryChangedの中身を記述します。その前に、MainFrm.cppの「BEGIN_MESSAGE_MAP」のところに以下のコードを記述して、カテゴリイベントを取得できるようにします。
ON_REGISTERED_MESSAGE(AFX_WM_ON_CHANGE_RIBBON_CATEGORY, OnRibbonCategoryChanged)
次にOnRibbonCategoryChangedの中身を以下のように記述します。
LPARAM CMainFrame::OnRibbonCategoryChanged(WPARAM wp, LPARAM lp) { CMFCRibbonCategory *pCategory = m_wndRibbonBar.GetActiveCategory(); int nCategory = m_wndRibbonBar.GetCategoryIndex(pCategory); //... 以下に命令をかく return 0; }
ここで、nCategoryがどのカテゴリを選んだかの番号となります。if文で命令を分岐させるといいでしょう。
参考記事:Notification for Ribbon Category Selection change and Command Routing
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー