Za pomocą przycisków rozwijanych w formancie Toolbar
Oprócz standardowych przycisków pasek narzędzi może mieć również przycisków rozwijanych.Przycisk rozwijania jest zwykle wskazywany przez obecność załączony w dół strzałek.
[!UWAGA]
Załączony w dół Strzałka pojawi się tylko wtedy, gdy TBSTYLE_EX_DRAWDDARROWS rozszerzone styl został ustawiony.
Kiedy użytkownik kliknie na tę strzałkę (lub przycisku,), jeśli występuje Brak strzałki TBN_DROPDOWN komunikat z powiadomieniem jest wysyłana do nadrzędnego formantu toolbar.Można obsłużyć tego powiadomienia i wyświetlić wyskakujące menu; podobne do zachowania programu Internet Explorer.
Poniższa procedura ilustruje sposób implementowania przycisk rozwijania narzędzi z wyskakującego menu:
Aby zaimplementować przycisk rozwijania
Raz na CToolBarCtrl utworzono obiekt, ustaw TBSTYLE_EX_DRAWDDARROWS styl, używając następującego kodu:
m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
Ustaw TBSTYLE_DROPDOWN nowy styl dla każdego (InsertButton lub AddButtons) lub istniejące (SetButtonInfo) przyciski, które będą przycisków rozwijanych.Poniższy przykład ilustruje modyfikację 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 klasy nadrzędnej obiektu narzędzi obsługi.
ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)
Obsługi nowych 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; }