除了標準按鈕之外,工具列也可以有下拉式按鈕。 下拉式按鈕通常會以附有向下箭頭來表示。
備註
只有在已設定TBSTYLE_EX_DRAWDDARROWS延伸樣式時,才會顯示附加的向下箭號。
當使用者按一下此箭頭(若沒有箭頭則按按鈕本身),便會將 TBN_DROPDOWN 通知訊息傳送至工具列控制項的父代元件。 然後,您可以處理此通知並顯示快捷功能表;類似於 Internet Explorer 的行為。
下列程序說明如何使用快捷選單實作下拉式工具列按鈕:
實作下拉式按鈕
建立物件
CToolBarCtrl之後,請使用下列程式代碼來設定TBSTYLE_EX_DRAWDDARROWS樣式:m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);將 TBSTYLE_DROPDOWN 樣式設定為任何新的 (InsertButton 或 AddButtons) 或現有的 (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);將TBN_DROPDOWN處理程式新增至工具欄物件的父類別。
ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)在新處理程式中,顯示適當的彈出式選單。 下列程式代碼示範一種方法:
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; }