다음을 통해 공유


도구 모음 컨트롤에서 드롭다운 단추 사용

표준 푸시 단추 외에도 도구 모음에는 드롭다운 단추가 있을 수 있습니다. 드롭다운 단추는 일반적으로 연결된 아래쪽 화살표의 존재로 표시됩니다.

참고 항목

연결된 아래쪽 화살표는 TBSTYLE_EX_DRAWDDARROWS 확장 스타일이 설정된 경우에만 표시됩니다.

사용자가 이 화살표(또는 단추 자체, 화살표가 없는 경우)를 클릭하면 TBN_DROPDOWN 알림 메시지가 도구 모음 컨트롤의 부모로 전송됩니다. 그러면 이 알림을 처리하고 팝업 메뉴를 표시할 수 있습니다. Internet Explorer의 동작과 유사합니다.

다음 절차에서는 팝업 메뉴를 사용하여 드롭다운 도구 모음 단추를 구현하는 방법을 보여 줍니다.

드롭다운 단추를 구현하려면

  1. CToolBarCtrl 개체가 만들어지면 다음 코드를 사용하여 TBSTYLE_EX_DRAWDDARROWS 스타일을 설정합니다.

    m_ToolBarCtrl.SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
    
  2. 드롭다운 단추가 될 새 단추(InsertButton 또는 AddButtons) 또는 기존(SetButtonInfo) 단추의 TBSTYLE_DROPDOWN 스타일을 설정합니다. 다음 예제에서는 개체의 기존 단추를 수정하는 방법을 CToolBarCtrl 보여 줍니다.

    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. 도구 모음 개체의 부모 클래스에 TBN_DROPDOWN 처리기를 추가합니다.

    ON_NOTIFY(TBN_DROPDOWN, IDC_TOOLBAR1, &CMyDialog::OnTbnDropDownToolBar1)
    
  4. 새 처리기에서 적절한 팝업 메뉴를 표시합니다. 다음 코드는 한 가지 방법을 보여 줍니다.

    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;
    }
    

참고 항목

CToolBarCtrl 사용
컨트롤