次の方法で共有


ツール バー コントロールでのドロップダウン ボタンの使い方

更新 : 2007 年 11 月

ツール バーには、標準的なプッシュ ボタンだけでなく、ドロップダウン ボタンを含めることもできます。通常、ドロップダウン ボタンは、下向きの矢印によって示されます。

1ke6s1fc.alert_note(ja-jp,VS.90).gifメモ :

この下向きの矢印は、TBSTYLE_EX_DRAWDARROWS 拡張スタイルが設定されている場合にだけ表示されます。

ユーザーがこの矢印 (矢印が表示されていない場合はボタン自体) をクリックすると、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. 新しいハンドラでは、適切なポップアップ メニューを表示します。その例を次に示します。

    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;
    }
    

参照

概念

コントロール (MFC)

参照

CToolBarCtrl の使い方