Verwenden der Dropdownschaltflächen in einem ToolBar-Steuerelement

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.

HinweisHinweis

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

  1. Sobald das CToolBarCtrl-Objekt erstellt wurde, legen Sie das Format TBSTYLE_EX_DRAWDDARROWS mit dem folgenden Code ein:

    m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
    
  2. 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);
    
  3. Fügen Sie einen TBN_DROPDOWN-Handler der übergeordneten Klasse des Objekts Symbolleisten hinzugefügt.

    ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)
    
  4. 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;
    }
    

Siehe auch

Referenz

Verwenden von CToolBarCtrl

Konzepte

Steuerelemente (MFC)