次の方法で共有


ツール バー コントロールで Drop-Down ボタンを使用する

標準のプッシュ ボタンに加えて、ツールバーにはドロップダウン ボタンを含めることもできます。 ドロップダウン ボタンは、通常、下向き矢印が付いている場合に示されます。

TBSTYLE_EX_DRAWDDARROWS拡張スタイルが設定されている場合にのみ、添付の下矢印が表示されます。

ユーザーがこの矢印 (または矢印がない場合はボタン自体) をクリックすると、ツール バー コントロールの親にTBN_DROPDOWN通知メッセージが送信されます。 その後、この通知を処理し、ポップアップ メニューを表示できます。Internet Explorer の動作に似ています。

次の手順は、ポップアップ メニューを使用してドロップダウン ツール バー ボタンを実装する方法を示しています。

ドロップダウン ボタンを実装するには

  1. CToolBarCtrl オブジェクトが作成されたら、次のコードを使用してTBSTYLE_EX_DRAWDDARROWS スタイルを設定します。

    m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
    
  2. ドロップダウン ボタンになる新しい (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);
    
  3. ツール バー オブジェクトの親クラスにTBN_DROPDOWN ハンドラーを追加します。

    ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)
    
  4. 新しいハンドラーで、適切なポップアップ メニューを表示します。 次のコードは、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;
    }
    

こちらも参照ください

CToolBarCtrl の使用
コントロール