ダイアログバー

見た目はツールバーに似ていますが、ダイアログをバーに格納したものです。

使い方

  1. リソースでダイアログを作成
  2. CDialogBarメンバ追加
  3. インスタンス化

リソースでダイアログを作成

プロパティで「枠なし」、「子」を指定して、任意のコントロールを配置します。

CDialogBarメンバ追加

フレームクラスにCDialogBarメンバを追加します。今回はメンバ名をm_dbMainとします。

インスタンス化

Create()でインスタンスを作成します。ソースはダイアログバーをレバーコントロールに追加する場合の例です。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	//~ 何らかの処理 ~//


	//==== ダイアログバー作成 ====//
	if(!m_dbMain.Create(&m_rbMain, IDD_DLGBAR_MAIN, WS_VISIBLE | CBRS_TOP, AFX_IDW_TOOLBAR))
	{
		return -1;
	}


	//==== レバーに追加 ====//
	m_rbMain.AddBar(&m_dbMain);


	//~ 何らかの処理 ~//
}

実行するとそれらしく表示されるのですが、この時点ではボタン類が無効になっているかと思います。
フレームクラスにハンドラを実装することで有効になります。

// ヘッダファイルへの記述 --------------------
class CMainFrame : public CFrameWnd
{
(中略)

// 生成されたメッセージ マップ関数
protected:
	CDialogBar m_wndDlgBar;
	//{{AFX_MSG(CMainFrame)
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnButtonSearch();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

// ソースファイルへの記述 --------------------
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_BN_CLICKED(IDC_BUTTON_HOGE, OnButtonHoge)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
・・・・・・

void CMainFrame::OnButtonHoge()
{
	//~ 何らかの処理 ~//
}