CMFCRibbonCheckBox
CMFCRibbonCheckBox を使って、ビュー(その他ウィンドウ)の表示/非表示
Visual C++ 2008 Feature Packを使って、MFCアプリケーションのひな型を作った場合、ステータスバーはメニューの項目から表示/非表示ができるようになっています。
ステータスバーと同じように、表示/非表示に切り換える方法を解説します。
MFCでステータスバーの表示/非表示を切り替えている仕組みはafxmdiframewndex.cpp内のメッセージマップの定義と、ID_VIEW_STATUS_BARにあります。
下の2行がBEGIN_MESSAGE_MAP(...)とEND_MESSAGE_MAP(...)の間に記述されています。
ステータスバーと同じように、表示/非表示に切り換える方法を解説します。
MFCでステータスバーの表示/非表示を切り替えている仕組みはafxmdiframewndex.cpp内のメッセージマップの定義と、ID_VIEW_STATUS_BARにあります。
下の2行がBEGIN_MESSAGE_MAP(...)とEND_MESSAGE_MAP(...)の間に記述されています。
ON_UPDATE_COMMAND_UI( ID_VIEW_STATUS_BAR, &CMainFrame::OnUpdatePaneMenu ) ON_COMMAND_EX( ID_VIEW_STATUS_BAR, &CMainFrame::OnPaneCheck )
この2行がステータスバーとメニューを関連付けます。
ID_VIEW_STATUS_BARというIDは、ステータスバー(CMFCRibbonStatusBar)、リボンバーのチェックボックス(CMFCRibbonCheckBox)で同じものが使われています。
以下にサンプルコードを記載します。
ストリングテーブルにID_VIEW_SAMPLEVIEWと言う名前のIDを割り当てます。文字列の内容は「サンプル\nサンプルビューの表示/非表示」とします。
ID_VIEW_STATUS_BARというIDは、ステータスバー(CMFCRibbonStatusBar)、リボンバーのチェックボックス(CMFCRibbonCheckBox)で同じものが使われています。
以下にサンプルコードを記載します。
ストリングテーブルにID_VIEW_SAMPLEVIEWと言う名前のIDを割り当てます。文字列の内容は「サンプル\nサンプルビューの表示/非表示」とします。
<MainFrame.cpp 28行目あたり>
メッセージマップに ON_UPDATE_COMMAND_UI と ON_COMMAND_EX を追加します。
// メッセージマップでチェックボックス、ビューのON/OFFの切り替えをさせるように設定する。
BEGIN_MESSAGE_MAP( CMainFrame, CMDIFrameWndEx )
...
ON_UPDATE_COMMAND_UI( ID_VIEW_SAMPLEVIEW, &CMainFrame::OnUpdatePaneMenu )
ON_COMMAND_EX( ID_VIEW_SAMPLEVIEW, &CMainFrame::OnPaneCheck )
...
END_MESSAGE_MAP()
-----------------------------------------------------------------------------
<MainFrame.cpp InitializeRibbon 内222行目あたり>
新しいラジオボタンを追加します。(以下の内容を追加します。)
strTemp = L"サンプルビュー";
CMFCRibbonButton* pBtnSampleView = new CMFCRibbonCheckBox(
ID_VIEW_SAMPLEVIEW, strTemp
);
pPanelView->Add(pBtnSampleView);
-----------------------------------------------------------------------------
<MainFrame.cpp CreateDockingWindows 内266行目あたり>
ID_VIEW_CLASSVIEW を ID_VIEW_SAMPLEVIEW に書き換えます。
// クラスビューを作成する(IDを書き換えるだけ)
// Create class view
CString strClassView;
bNameValid = strClassView.LoadString(IDS_CLASS_VIEW);
ASSERT(bNameValid);
if ( !m_wndClassView.Create(
strClassView,
this,
CRect(0, 0, 200, 200),
TRUE,
ID_VIEW_SAMPLEVIEW,//ID_VIEW_CLASSVIEW
WS_CHILD
| WS_VISIBLE
| WS_CLIPSIBLINGS
| WS_CLIPCHILDREN
| CBRS_LEFT
| CBRS_FLOAT_MULTI
)
)
-----------------------------------------------------------------------------
以上の方法でチェックボックスを切り替えるだけでクラスビューが表示/非表示されるようになります。