在工具列控制項中使用下拉按鈕
除了標準按鈕之外,工具列也有下拉式按鈕。 有下拉式按鈕由已附加的向下箭號出現通常表示。
注意事項 |
---|
只有當 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; }