Behandeln von Dropdownschaltflächen
Eine Dropdownschaltfläche kann Benutzern eine Liste von Optionen anzeigen. Um diesen Stil der Schaltfläche zu erstellen, geben Sie den BTNS-DROPDOWN-Stil _ an (aus Kompatibilitäts- und Kompatibilitäts- mit früheren Versionen der allgemeinen Steuerelemente auch ALS _ TBSTYLE-DROPDOWN bezeichnet). Um eine Dropdownschaltfläche mit einem Pfeil anzuzeigen, müssen Sie auch den TBSTYLE _ EX _ DRAWDDARROWS-Symbolleistenstil festlegen, indem Sie eine TB _ SETEXTENDEDSTYLE-Meldung senden.
Die folgende Abbildung zeigt eine Dropdownschaltfläche "Öffnen", in der das Kontextmenü geöffnet ist und eine Liste von Dateien angezeigt wird. In diesem Beispiel hat die Symbolleiste den TBSTYLE _ EX _ DRAWDDARROWS-Stil.

Die folgende Abbildung zeigt dieselbe Symbolleiste, dieses Mal ohne den TBSTYLE _ EX _ DRAWDDARROWS-Stil.

Wenn Benutzer auf eine Symbolleistenschaltfläche klicken, die das DROPDOWN-Format von BTNS _ verwendet, sendet das Symbolleisten-Steuerelement dem übergeordneten Fenster einen TBN-DROPDOWN-Benachrichtigungscode. _
Wichtige Informationen
Technologien
Voraussetzungen
- C/C++
- Windows Benutzeroberfläche-Programmierung
Instructions
Behandeln einer Dropdownschaltfläche
Im folgenden Codebeispiel wird veranschaulicht, wie eine Anwendung eine Dropdownschaltfläche in einem Symbolleisten-Steuerelement unterstützen kann.
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;
}