드롭다운 단추 처리 방법
드롭다운 단추는 사용자에게 옵션 목록을 제공할 수 있습니다. 이 스타일의 단추를 만들려면 BTNS_DROPDOWN 스타일(공용 컨트롤의 이전 버전과의 호환성을 위해 TBSTYLE_DROPDOWN이라고도 함)을 지정합니다. 화살표가 있는 드롭다운 단추를 표시하려면 TB_SETEXTENDEDSTYLE 메시지를 전송하여 TBSTYLE_EX_DRAWDDARROWS 도구 모음 스타일도 설정해야 합니다.
다음 그림에서는 바로 가기 메뉴가 열려 있고 파일 목록을 표시하는 드롭다운 "열기" 단추를 보여 줍니다. 이 예에서 도구 모음에는 TBSTYLE_EX_DRAWDDARROWS 스타일이 있습니다.
다음 그림에서는 이번에는 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;
}
관련 항목