ダイアログ・バーからフレーム・ウインドウへメッセージが送られるようにする
【ウインドウ・メッセージの発行】
ダイアログ・バー上にクラスを割り当てて、そこにイベントを設定してもウインドウ・メッセージは
フレーム・ウインドウへ発行されません。
ダイアログ・バー上のコントロールのメッセージをフレーム・ウインドウへ送られるようにして、コン
トロールが動作するようにするためには、フレーム・ウインドウにメッセージを追加する必要があります。
ウインドウ・メッセージの登録は、フレーム・ウインドウのBEGIN_MESSAGE_MAPマクロへ追加します。
【ダイアログ・バー上のコントロールの操作】
ダイアログ・バー上のコントロールを操作させるためのオブジェクトを作成する必要があります。
CDialogbar::GetDlgItemを使用します。
【サンプル】
[MainFrm.h]
protected:
CDialogBar m_wndDialogBar; //ダイアログ・バーのメンバを宣言
[MainFrm.cpp]
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1) <---- ウインドウ・メッセージの追加
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
・
・
・
//---------------------------------------------------------------------------
//ダイアログ・バーを生成する
if(!m_wndDialogBar.Create(this, IDD_DIALOG_BAR, CBRS_LEFT, IDD_DIALOG_BAR)){
TRACE("Failed to create dialog bar\n");
return -1;
}
m_wndDialogBar.SetBarStyle(m_wndDialogBar.GetBarStyle()|CBRS_SIZE_DYNAMIC);
//ドッキングを可能にする
m_wndDialogBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndDialogBar);
//ダイアログ・バーのリスト・ボックスの初期化
CListBox* m_ListBox = (CListBox*)m_wndDialogBar.GetDlgItem(IDC_LIST1);
m_ListBox->AddString("TEST");
m_ListBox->AddString("TEST2");
・
・
・
}
void CMainFrame::OnSelchangeList1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
AfxMessageBox("TEST");
}