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

  1. Raz z CToolBarCtrl został utworzony obiekt, ustaw TBSTYLE_EX_DRAWDDARROWS styl, przy użyciu następującego kodu:

    m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
    
  2. 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);
    
  3. Dodaj TBN_DROPDOWN obsługi do klasy nadrzędnej obiekt paska narzędzi.

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

Zobacz też

Informacje

Korzystanie z CToolBarCtrl

Koncepcje

Formanty (MFC)