Använda Drop-Down knappar i en verktygsfältskontroll

Förutom standardknappar kan ett verktygsfält också ha listruteknappar. En nedrullningsknapp indikerar vanligtvis en nedåtpil.

Anmärkning

Den bifogade nedåtpilen visas bara om TBSTYLE_EX_DRAWDDARROWS utökade formatmall har angetts.

När användaren klickar på den här pilen (eller själva knappen, om ingen pil finns), skickas ett TBN_DROPDOWN meddelandemeddelande till den överordnade kontrollen i verktygsfältet. Du kan sedan hantera det här meddelandet och visa en popup-meny. liknar beteendet i Internet Explorer.

Följande procedur visar hur du implementerar en knapp i listrutan med en popup-meny:

Att implementera en nedrullningsbar knapp

  1. När objektet CToolBarCtrl har skapats anger du TBSTYLE_EX_DRAWDDARROWS formatmall med hjälp av följande kod:

    m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
    
  2. Ange TBSTYLE_DROPDOWN formatmall för alla nya (InsertButton - eller AddButtons) eller befintliga (SetButtonInfo)-knappar som ska vara nedrullningsbara knappar. I följande exempel visas hur du ändrar en befintlig knapp i ett 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. Lägg till en TBN_DROPDOWN-hanterare i den överordnade klassen för verktygsfältsobjektet.

    ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)
    
  4. Visa lämplig popup-meny i den nya hanteraren. Följande kod visar en 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;
    }
    

Se även

Använda CToolBarCtrl
Kontroller