TrackPopupMenuEx-Funktion (winuser.h)
Zeigt ein Kontextmenü an der angegebenen Position an und verfolgt die Auswahl der Elemente im Kontextmenü nach. Das Kontextmenü kann an einer beliebigen Stelle auf dem Bildschirm angezeigt werden.
Syntax
BOOL TrackPopupMenuEx(
[in] HMENU hMenu,
[in] UINT uFlags,
[in] int x,
[in] int y,
[in] HWND hwnd,
[in, optional] LPTPMPARAMS lptpm
);
Parameter
[in] hMenu
Typ: HMENU
Ein Handle für das anzuzeigende Kontextmenü. Dieses Handle kann abgerufen werden, indem Sie die CreatePopupMenu-Funktion aufrufen, um ein neues Kontextmenü zu erstellen, oder durch Aufrufen der GetSubMenu-Funktion , um ein Handle für ein Untermenü abzurufen, das einem vorhandenen Menüelement zugeordnet ist.
[in] uFlags
Typ: UINT
Gibt Funktionsoptionen an.
Verwenden Sie eines der folgenden Flags, um anzugeben, wie die Funktion das Kontextmenü horizontal positioniert.
Verwenden Sie eines der folgenden Flags, um anzugeben, wie die Funktion das Kontextmenü vertikal positioniert.
Verwenden Sie die folgenden Flags, um die Ermittlung der Benutzerauswahl zu steuern, ohne ein übergeordnetes Fenster für das Menü einrichten zu müssen.
Verwenden Sie eines der folgenden Flags, um anzugeben, welche Maustaste im Kontextmenü nachverfolgt wird.
Verwenden Sie eine vernünftige Kombination der folgenden Flags, um die Animation eines Menüs zu ändern. Wenn Sie z. B. ein horizontales und ein vertikales Flag auswählen, können Sie eine diagonale Animation erzielen.
Damit animationen ausgeführt werden können, muss die SystemParametersInfo-FunktionSPI_SETMENUANIMATION festlegen. Außerdem werden alle TPM_*ANIMATION-Flags außer TPM_NOANIMATION ignoriert, wenn die Menüblendungsanimation aktiviert ist. Weitere Informationen finden Sie im SPI_GETMENUFADE-Flag in SystemParametersInfo.
Verwenden Sie das Flag TPM_RECURSE , um ein Menü anzuzeigen, wenn bereits ein anderes Menü angezeigt wird. Dies soll Kontextmenüs innerhalb eines Menüs unterstützen.
Verwenden Sie eines der folgenden Flags, um anzugeben, ob horizontale oder vertikale Ausrichtung berücksichtigt werden soll.
Das ausgeschlossene Rechteck ist ein Teil des Bildschirms, den das Menü nicht überlappen sollte. sie wird durch den lptpm-Parameter angegeben.
Verwenden Sie für das Textlayout von rechts nach links TPM_LAYOUTRTL. Standardmäßig ist das Textlayout von links nach rechts.
[in] x
Typ: int
Die horizontale Position des Kontextmenüs in Bildschirmkoordinaten.
[in] y
Typ: int
Die vertikale Position des Kontextmenüs in Bildschirmkoordinaten.
[in] hwnd
Typ: HWND
Ein Handle für das Fenster, das das Kontextmenü besitzt. Dieses Fenster empfängt alle Nachrichten aus dem Menü. Das Fenster empfängt erst dann eine WM_COMMAND Nachricht aus dem Menü, wenn die Funktion zurückgegeben wird. Wenn Sie im fuFlags-Parameter TPM_NONOTIFY angeben, sendet die Funktion keine Nachrichten an das durch hwnd identifizierte Fenster. Sie müssen jedoch weiterhin ein Fensterhandle in hwnd übergeben. Dies kann ein beliebiges Fensterhandle aus Ihrer Anwendung sein.
[in, optional] lptpm
Typ: LPTPMPARAMS
Ein Zeiger auf eine TPMPARAMS-Struktur , die einen Bereich des Bildschirms angibt, den das Menü nicht überlappen sollte. Dieser Parameter kann NULL sein.
Rückgabewert
Typ: BOOL
Wenn Sie TPM_RETURNCMD im fuFlags-Parameter angeben, ist der Rückgabewert der Menüelementbezeichner des elements, das der Benutzer ausgewählt hat. Wenn der Benutzer das Menü abbricht, ohne eine Auswahl vorzunehmen, oder wenn ein Fehler auftritt, ist der Rückgabewert null.
Wenn Sie TPM_RETURNCMD im fuFlags-Parameter nicht angeben, ist der Rückgabewert ungleich null, wenn die Funktion erfolgreich ist, und null, wenn sie fehlschlägt. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Rufen Sie GetSystemMetrics mit SM_MENUDROPALIGNMENT auf, um das richtige horizontale Ausrichtungsflag (TPM_LEFTALIGN oder TPM_RIGHTALIGN) und/oder das horizontale Animationsrichtungsflag (TPM_HORPOSANIMATION oder TPM_HORNEGANIMATION) zu bestimmen, das an TrackPopupMenu oder TrackPopupMenuEx übergeben werden soll. Dies ist wichtig, um eine optimale Benutzererfahrung zu schaffen, insbesondere bei der Entwicklung von Microsoft Tablet PC-Anwendungen.
Um ein Kontextmenü für ein Benachrichtigungssymbol anzuzeigen, muss das aktuelle Fenster das Vordergrundfenster sein, bevor die Anwendung TrackPopupMenu oder TrackPopupMenuEx aufruft. Andernfalls wird das Menü nicht ausgeblendet, wenn der Benutzer außerhalb des Menüs oder des Fensters klickt, in dem das Menü erstellt wurde (sofern es sichtbar ist). Wenn das aktuelle Fenster ein untergeordnetes Fenster ist, müssen Sie das übergeordnete Fenster (oberste Ebene) als Vordergrundfenster festlegen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winuser.h (windows.h einschließen) |
Bibliothek | User32.lib |
DLL | User32.dll |
APIs | ext-ms-win-ntuser-menu-l1-1-1 (eingeführt in Windows 8.1) |
Siehe auch
Konzept
Referenz