在工具列控制項中使用下拉按鈕
除了標準推播按鈕之外,工具列也可以有下拉式按鈕。 下拉式按鈕通常以附加向下箭號的存在來表示。
注意
只有在已設定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)
在新處理常式中,顯示適當的快顯功能表。 下列程式碼示範一種方法:
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; }