使用工具列控制項中的下拉式按鈕
除了標準按鈕,工具列也可以有下拉式按鈕。 下拉式按鈕通常被表示式附加,向下箭號。
注意事項 |
---|
附加向下箭號會出現時,才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; }