다음을 통해 공유


드롭다운 단추를 처리하는 방법

드롭다운 단추는 사용자에게 옵션 목록을 표시할 수 있습니다. 이 단추 스타일을 만들려면 BTNS_DROPDOWN 스타일(이전 버전의 공통 컨트롤과의 호환성을 위해 TBSTYLE_DROPDOWN이라고도 함)을 지정합니다. 화살표가 있는 드롭다운 단추를 표시하려면 TB_SETEXTENDEDSTYLE 메시지를 보내 TBSTYLE_EX_DRAWDDARROWS 도구 모음 스타일도 설정해야 합니다.

다음 그림에서는 상황에 맞는 메뉴가 열리고 파일 목록이 표시된 드롭다운 "열기" 단추를 보여 줍니다. 이 예제에서 도구 모음에는 TBSTYLE_EX_DRAWDDARROWS 스타일이 있습니다.

아이콘으로 표현된 세 개의 도구 모음 항목이 있는 대화 상자의 스크린샷입니다. 하나는 확장된 드롭다운 화살표와 3개 항목으로 구성된 상황에 맞는 메뉴를 나타냅니다.

다음 그림에서는 TBSTYLE_EX_DRAWDDARROWS 스타일이 없는 동일한 도구 모음을 보여 줍니다.

이전 대화 상자의 스크린샷 , 상황에 맞는 메뉴가 있는 아이콘에는 드롭다운 화살표가 없습니다

사용자가 BTNS_DROPDOWN 스타일을 사용하는 도구 모음 단추를 클릭하면 도구 모음 컨트롤이 부모 창에 TBN_DROPDOWN 알림 코드를 보냅니다.

알아야 할 사항

기술

필수 구성 요소

  • C/C++
  • Windows 사용자 인터페이스 프로그래밍

지시

드롭다운 버튼 처리

다음 코드 예제에서는 애플리케이션 도구 모음 컨트롤에서 드롭다운 단추를 지원 하는 방법을 보여 줍니다.

BOOL DoNotify(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{

    #define lpnm   ((LPNMHDR)lParam)
    #define lpnmTB ((LPNMTOOLBAR)lParam)

    switch(lpnm->code)
    {
        case TBN_DROPDOWN:
        {
            // Get the coordinates of the button.
            RECT rc;
            SendMessage(lpnmTB->hdr.hwndFrom, TB_GETRECT, (WPARAM)lpnmTB->iItem, (LPARAM)&rc);

            // Convert to screen coordinates.            
            MapWindowPoints(lpnmTB->hdr.hwndFrom, HWND_DESKTOP, (LPPOINT)&rc, 2);                         
        
            // Get the menu.
            HMENU hMenuLoaded = LoadMenu(g_hinst, MAKEINTRESOURCE(IDR_POPUP)); 
         
            // Get the submenu for the first menu item.
            HMENU hPopupMenu = GetSubMenu(hMenuLoaded, 0);

            // Set up the pop-up menu.
            // In case the toolbar is too close to the bottom of the screen, 
            // set rcExclude equal to the button rectangle and the menu will appear above 
            // the button, and not below it.
         
            TPMPARAMS tpm;
         
            tpm.cbSize    = sizeof(TPMPARAMS);
            tpm.rcExclude = rc;
         
            // Show the menu and wait for input. 
            // If the user selects an item, its WM_COMMAND is sent.
         
            TrackPopupMenuEx(hPopupMenu, 
                             TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL, 
                             rc.left, rc.bottom, g_hwndMain, &tpm);

            DestroyMenu(hMenuLoaded);
         
        return (FALSE);
      
        }
    }
   
    return FALSE;
}

도구 모음 컨트롤 사용

Windows 공용 컨트롤 데모(CppWindowsCommonControls)