Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Zusätzlich zu den standardmäßigen kann eine Symbolleiste Schaltflächen Dropdownschaltflächen haben.Eine Dropdown-Schaltfläche wird normalerweise durch das Vorhandensein eines angefügten Pfeil nach unten angegeben.
Hinweis |
|---|
Der angefügte Pfeil nach unten wird nur angezeigt, wenn das TBSTYLE_EX_DRAWDDARROWS erweiterten Format festgelegt wurde. |
Wenn der Benutzer auf diesen Pfeil klicken (oder der Schaltfläche auch, wenn kein Pfeil vorhanden ist), wird eine TBN_DROPDOWN Benachrichtigungsmeldung zum übergeordneten Element des Symbolleisten-Steuerelements gesendet.Sie können diese Benachrichtigung bearbeiten und anschließend ein Popupmenü anzeigen. vergleichbar mit dem Verhalten von Internet Explorer.
Das folgende Verfahren veranschaulicht, wie eine Dropdown-Symbolleisten-Schaltfläche mit einem Popupmenü implementiert:
So implementieren Sie eine Dropdown-Schaltfläche
Sobald das CToolBarCtrl-Objekt erstellt wurde, legen Sie das Format TBSTYLE_EX_DRAWDDARROWS mit dem folgenden Code ein:
m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);Legen Sie das TBSTYLE_DROPDOWN Format für alle neuen (InsertButton oder AddButtons) oder vorhandenen (Schaltfläche)SetButtonInfo Dropdownschaltflächen fest.Im folgenden Beispiel wird das Ändern einer vorhandenen Schaltfläche in einem CToolBarCtrl-Objekt:
TBBUTTONINFO tbi; tbi.dwMask = TBIF_STYLE; tbi.cbSize = sizeof(TBBUTTONINFO); m_ToolBarCtrl.GetButtonInfo(0, &tbi); tbi.fsStyle |= TBSTYLE_DROPDOWN; m_ToolBarCtrl.SetButtonInfo(0, &tbi);Fügen Sie einen TBN_DROPDOWN-Handler der übergeordneten Klasse des Objekts Symbolleisten hinzugefügt.
ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)Im neuen Handler zeigen Sie das entsprechende Popupmenü angezeigt.Der folgende Code zeigt eine Methode:
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; }
Hinweis