Używanie przycisków listy rozwijanej w formancie paska narzędzi
Oprócz standardowych przycisków pasek narzędzi może być również przycisków rozwijanych.Przycisk listy rozwijanej jest zwykle wskazywany przez obecność dołączonego klawisz strzałki.
[!UWAGA]
Dołączone w dół strzałkę pojawi się tylko wtedy, gdy TBSTYLE_EX_DRAWDDARROWS rozszerzony styl został ustawiony.
Kiedy użytkownik kliknie na tę strzałkę (lub sam, jeśli występuje Brak strzałki przycisk), TBN_DROPDOWN komunikat z powiadomieniem jest wysyłany do macierzystego formantu toolbar.Następnie można obsługiwać tego powiadomienia i wyświetlić menu podręczne; podobne do zachowania programu Internet Explorer.
Poniższa procedura ilustruje sposób implementowania przycisku paska narzędzi listy rozwijanej z wyskakującego menu:
Aby zaimplementować przycisk listy rozwijanej
Raz z CToolBarCtrl został utworzony obiekt, ustaw TBSTYLE_EX_DRAWDDARROWS styl, przy użyciu następującego kodu:
m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
Zestaw TBSTYLE_DROPDOWN nowy styl dla dowolnego (InsertButton lub AddButtons) lub istniejące (SetButtonInfo) przyciski, które mają być przycisków rozwijanych.W poniższym przykładzie zademonstrowano modyfikowanie istniejącego przycisku w CToolBarCtrl obiekt:
TBBUTTONINFO tbi; tbi.dwMask = TBIF_STYLE; tbi.cbSize = sizeof(TBBUTTONINFO); m_ToolBarCtrl.GetButtonInfo(0, &tbi); tbi.fsStyle |= TBSTYLE_DROPDOWN; m_ToolBarCtrl.SetButtonInfo(0, &tbi);
Dodaj TBN_DROPDOWN obsługi do klasy nadrzędnej obiekt paska narzędzi.
ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)
W nowych obsługi wyświetlić menu podręczne właściwe.Poniższy kod demonstruje jedną metodę:
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; }