共用方式為


在工具列控制件中使用 Drop-Down 按鈕

除了標準按鈕之外,工具列也可以有下拉式按鈕。 下拉式按鈕通常會以附有向下箭頭來表示。

備註

只有在已設定TBSTYLE_EX_DRAWDDARROWS延伸樣式時,才會顯示附加的向下箭號。

當使用者按一下此箭頭(若沒有箭頭則按按鈕本身),便會將 TBN_DROPDOWN 通知訊息傳送至工具列控制項的父代元件。 然後,您可以處理此通知並顯示快捷功能表;類似於 Internet Explorer 的行為。

下列程序說明如何使用快捷選單實作下拉式工具列按鈕:

實作下拉式按鈕

  1. 建立物件 CToolBarCtrl 之後,請使用下列程式代碼來設定TBSTYLE_EX_DRAWDDARROWS樣式:

    m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
    
  2. 將 TBSTYLE_DROPDOWN 樣式設定為任何新的 (InsertButtonAddButtons) 或現有的 (SetButtonInfo) 按鈕,使其成為下拉式按鈕。 下列範例示範修改 物件中的 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;
    }
    

另請參閱

使用 CToolBarCtrl
控制項