Funzione TrackPopupMenuEx (winuser.h)

Visualizza un menu di scelta rapida nella posizione specificata e tiene traccia della selezione degli elementi nel menu di scelta rapida. Il menu di scelta rapida può essere visualizzato in qualsiasi punto dello schermo.

Sintassi

BOOL TrackPopupMenuEx(
  [in]           HMENU       hMenu,
  [in]           UINT        uFlags,
  [in]           int         x,
  [in]           int         y,
  [in]           HWND        hwnd,
  [in, optional] LPTPMPARAMS lptpm
);

Parametri

[in] hMenu

Tipo: HMENU

Handle per il menu di scelta rapida da visualizzare. Questo handle può essere ottenuto chiamando la funzione CreatePopupMenu per creare un nuovo menu di scelta rapida o chiamando la funzione GetSubMenu per recuperare un handle in un sottomenu associato a una voce di menu esistente.

[in] uFlags

Tipo: UINT

Specifica le opzioni della funzione.

Usare uno dei flag seguenti per specificare in che modo la funzione posiziona il menu di scelta rapida orizzontalmente.

Valore Significato
TPM_CENTERALIGN
0x0004L
Centra orizzontalmente il menu di scelta rapida rispetto alla coordinata specificata dal parametro x .
TPM_LEFTALIGN
0x0000L
Posiziona il menu di scelta rapida in modo che il lato sinistro sia allineato alla coordinata specificata dal parametro x .
TPM_RIGHTALIGN
0x0008L
Posiziona il menu di scelta rapida in modo che il lato destro sia allineato alla coordinata specificata dal parametro x .
 

Usare uno dei flag seguenti per specificare in che modo la funzione posiziona verticalmente il menu di scelta rapida.

Valore Significato
TPM_BOTTOMALIGN
0x0020L
Posiziona il menu di scelta rapida in modo che il lato inferiore sia allineato alla coordinata specificata dal parametro y .
TPM_TOPALIGN
0x0000L
Posiziona il menu di scelta rapida in modo che il lato superiore sia allineato alla coordinata specificata dal parametro y .
TPM_VCENTERALIGN
0x0010L
Centra verticalmente il menu di scelta rapida rispetto alla coordinata specificata dal parametro y .
 

Usare i flag seguenti per controllare l'individuazione della selezione dell'utente senza dover configurare una finestra padre per il menu.

Valore Significato
TPM_NONOTIFY
0x0080L
La funzione non invia messaggi di notifica quando l'utente fa clic su una voce di menu.
TPM_RETURNCMD
0x0100L
La funzione restituisce l'identificatore della voce di menu della selezione dell'utente nel valore restituito.
 

Utilizzare uno dei flag seguenti per specificare quale pulsante del mouse tiene traccia del menu di scelta rapida.

Valore Significato
TPM_LEFTBUTTON
0x0000L
L'utente può selezionare le voci di menu solo con il pulsante sinistro del mouse.
TPM_RIGHTBUTTON
0x0002L
L'utente può selezionare le voci di menu con i pulsanti sinistro e destro del mouse.
 

Utilizzare qualsiasi combinazione ragionevole dei flag seguenti per modificare l'animazione di un menu. Ad esempio, selezionando un flag orizzontale e verticale, è possibile ottenere un'animazione diagonale.

Valore Significato
TPM_HORNEGANIMATION
0x0800L
Anima il menu da destra a sinistra.
TPM_HORPOSANIMATION
0x0400L
Anima il menu da sinistra a destra.
TPM_NOANIMATION
0x4000L
Visualizza il menu senza animazione.
TPM_VERNEGANIMATION
0x2000L
Anima il menu dal basso verso l'alto.
TPM_VERPOSANIMATION
0x1000L
Anima il menu dall'alto verso il basso.
 

Affinché si verifichi un'animazione, la funzione SystemParametersInfo deve impostare SPI_SETMENUANIMATION. Inoltre, tutti i flag TPM_*ANIMATION , ad eccezione di TPM_NOANIMATION, vengono ignorati se l'animazione di dissolvenza del menu è attivata. Per altre informazioni, vedere il flag SPI_GETMENUFADE in SystemParametersInfo.

Usare il flag TPM_RECURSE per visualizzare un menu quando è già visualizzato un altro menu. Questo è progettato per supportare i menu di scelta rapida all'interno di un menu.

Utilizzare uno dei flag seguenti per specificare se supportare l'allineamento orizzontale o verticale.

Valore Significato
TPM_HORIZONTAL
0x0000L
Se il menu non può essere visualizzato nella posizione specificata senza sovrapporre il rettangolo escluso, il sistema tenta di adattare l'allineamento orizzontale richiesto prima dell'allineamento verticale richiesto.
TPM_VERTICAL
0x0040L
Se il menu non può essere visualizzato nella posizione specificata senza sovrapporre il rettangolo escluso, il sistema tenta di adattare l'allineamento verticale richiesto prima dell'allineamento orizzontale richiesto.
 

Il rettangolo escluso è una parte dello schermo che il menu non deve sovrapporsi; viene specificato dal parametro lptpm .

Per il layout di testo da destra a sinistra, usare TPM_LAYOUTRTL. Per impostazione predefinita, il layout di testo è da sinistra a destra.

[in] x

Tipo: int

Posizione orizzontale del menu di scelta rapida, nelle coordinate dello schermo.

[in] y

Tipo: int

Posizione verticale del menu di scelta rapida, nelle coordinate dello schermo.

[in] hwnd

Tipo: HWND

Handle per la finestra proprietaria del menu di scelta rapida. Questa finestra riceve tutti i messaggi dal menu. La finestra non riceve un messaggio WM_COMMAND dal menu finché la funzione non viene restituita. Se si specifica TPM_NONOTIFY nel parametro fuFlags , la funzione non invia messaggi alla finestra identificata da hwnd. Tuttavia, è comunque necessario passare un handle di finestra in hwnd. Può essere qualsiasi handle di finestra dall'applicazione.

[in, optional] lptpm

Tipo: LPTPMPARAMS

Puntatore a una struttura TPMPARAMS che specifica un'area dello schermo non deve sovrapporsi. Questo parametro può essere NULL.

Valore restituito

Tipo: BOOL

Se si specifica TPM_RETURNCMD nel parametro fuFlags , il valore restituito è l'identificatore di voce di menu dell'elemento selezionato dall'utente. Se l'utente annulla il menu senza effettuare una selezione o se si verifica un errore, il valore restituito è zero.

Se non si specifica TPM_RETURNCMD nel parametro fuFlags , il valore restituito è diverso da zero se la funzione riesce e zero se ha esito negativo. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Chiamare GetSystemMetrics con SM_MENUDROPALIGNMENT per determinare il flag di allineamento orizzontale corretto (TPM_LEFTALIGN o TPM_RIGHTALIGN) e/o il flag di direzione dell'animazione orizzontale (TPM_HORPOSANIMATION o TPM_HORNEGANIMATION) da passare a TrackPopupMenu o TrackPopupMenuEx. Questo è essenziale per creare un'esperienza utente ottimale, soprattutto quando si sviluppano applicazioni Microsoft Tablet PC.

Per visualizzare un menu di scelta rapida per un'icona di notifica, la finestra corrente deve essere la finestra in primo piano prima che l'applicazione chiami TrackPopupMenu o TrackPopupMenuEx. In caso contrario, il menu non scompare quando l'utente fa clic all'esterno del menu o alla finestra che ha creato il menu (se è visibile). Se la finestra corrente è una finestra figlio, è necessario impostare la finestra padre (primo livello) come finestra di primo piano.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winuser.h (include Windows.h)
Libreria User32.lib
DLL User32.dll
Set di API ext-ms-win-ntuser-menu-l1-1-1 (introdotto in Windows 8.1)

Vedi anche

Informazioni concettuali

CreatePopupMenu

GetSubMenu

Menu

Riferimento

TPMPARAMS

WM_COMMAND