Astonish Arts  > AADS  > MFC Visual C++ 2008 Feature Pack  > CMFCRibbonCheckBox

Astonish Arts Developer Section

MFC VC++2008 Feature Pack

CMFCRibbonCheckBox

このセクションの解説はサンプルプロジェクトを使って書かれています。
ソースコード内の行番号などは必ずしも一致するものではありません。

CMFCRibbonCheckBox を使って、ビュー(その他ウィンドウ)の表示/非表示

Visual C++ 2008 Feature Packを使って、MFCアプリケーションのひな型を作った場合、ステータスバーはメニューの項目から表示/非表示ができるようになっています。
ステータスバーと同じように、表示/非表示に切り換える方法を解説します。

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サンプルビューの表示/非表示」とします。
<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
        )
    )
-----------------------------------------------------------------------------
			
以上の方法でチェックボックスを切り替えるだけでクラスビューが表示/非表示されるようになります。
コピーライト