ツール バー コントロールでのドロップダウン ボタンの使い方
ツール バーには、標準のプッシュ ボタンのほか、ドロップダウン ボタンを含めることもできます。 ドロップダウン ボタンには、通常、下矢印がアタッチされています。
Note
アタッチされた下矢印は、TBSTYLE_EX_DRAWDDARROWS 拡張スタイルが設定されている場合にのみ出現します。
ユーザーがこの矢印 (矢印がない場合はボタン自体) をクリックすると、TBN_DROPDOWN 通知メッセージがツール バー コントロールの親に送信されます。 その後、この通知を処理し、ポップアップ メニューを表示できます。これは、Internet Explorer の動作に似ています。
次の手順では、ポップアップ メニューを備えたドロップダウン ツール バー ボタンを実装する方法を示します。
ドロップダウン ボタンを実装するには
CToolBarCtrl
オブジェクトが作成されたら、次のコードを使用して、TBSTYLE_EX_DRAWDDARROWS スタイルを設定します。m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
ドロップダウン ボタンとなる新しい (InsertButton または AddButtons) ボタンまたは既存の (SetButtonInfo) ボタンに対して、TBSTYLE_DROPDOWN を設定します。 次の例は、
CToolBarCtrl
オブジェクト内の既存のボタンを変更を示しています。TBBUTTONINFO tbi; tbi.dwMask = TBIF_STYLE; tbi.cbSize = sizeof(TBBUTTONINFO); m_ToolBarCtrl.GetButtonInfo(0, &tbi); tbi.fsStyle |= TBSTYLE_DROPDOWN; m_ToolBarCtrl.SetButtonInfo(0, &tbi);
ツール バー オブジェクトの親クラスに TBN_DROPDOWN ハンドラーを追加します。
ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)
新しいハンドラーに、適切なポップアップ メニューを表示します。 次のコードは 1 つの方法を示しています。
void CMyDialog::OnTbnDropDownToolBar1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMTOOLBAR pToolBar = reinterpret_cast<LPNMTOOLBAR>(pNMHDR); ClientToScreen(&(pToolBar->rcButton)); // TrackPopupMenu uses screen coords CMenu menu; VERIFY(menu.LoadMenu(IDR_MENU1)); CMenu *pPopup = menu.GetSubMenu(0); if (NULL != pPopup) { pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pToolBar->rcButton.left, pToolBar->rcButton.bottom, this); } *pResult = 0; }