Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przycisk listy rozwijanej może prezentować użytkownikom listę opcji. Aby utworzyć ten styl przycisku, określ styl BTNS_DROPDOWN (nazywany również TBSTYLE_DROPDOWN w celu zachowania zgodności z poprzednimi wersjami wspólnych kontrolek). Aby wyświetlić przycisk listy rozwijanej ze strzałką, należy również ustawić styl paska narzędzi TBSTYLE_EX_DRAWDDARROWS, wysyłając komunikat TB_SETEXTENDEDSTYLE.
Poniższa ilustracja przedstawia przycisk rozwijany "Otwórz" z otwartym menu kontekstowym i wyświetla listę plików. W tym przykładzie pasek narzędzi ma styl TBSTYLE_EX_DRAWDDARROWS.
Na poniższej ilustracji przedstawiono ten sam pasek narzędzi, tym razem bez stylu TBSTYLE_EX_DRAWDDARROWS.
Gdy użytkownicy klikną przycisk paska narzędzi, który używa stylu BTNS_DROPDOWN, kontrolka paska narzędzi wysyła w oknie nadrzędnym kod powiadomienia TBN_DROPDOWN.
Co musisz wiedzieć
Technologie
Warunki wstępne
- C/C++
- Programowanie interfejsu użytkownika systemu Windows
Instrukcje
Obsługa przycisku listy rozwijanej
Poniższy przykład kodu pokazuje, jak aplikacja może obsługiwać przycisk listy rozwijanej w kontrolce paska narzędzi.
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;
}
Tematy pokrewne