Metodo IContextMenu::QueryContextMenu (shobjidl_core.h)

Aggiunge comandi a un menu di scelta rapida.

Sintassi

HRESULT QueryContextMenu(
  HMENU hmenu,
  UINT  indexMenu,
  UINT  idCmdFirst,
  UINT  idCmdLast,
  UINT  uFlags
);

Parametri

hmenu

Tipo: HMENU

Handle per il menu di scelta rapida. Il gestore deve specificare questo handle quando si aggiungono voci di menu.

indexMenu

Tipo: UINT

Posizione in base zero in corrispondenza della quale inserire la prima nuova voce di menu.

idCmdFirst

Tipo: UINT

Valore minimo che il gestore può specificare per un identificatore di voce di menu.

idCmdLast

Tipo: UINT

Valore massimo che il gestore può specificare per un identificatore di voce di menu.

uFlags

Tipo: UINT

Flag facoltativi che specificano la modalità di modifica del menu di scelta rapida. Questo parametro può essere impostato su una combinazione dei valori seguenti. I bit rimanenti della parola con ordine basso sono riservati dal sistema. La parola di ordine elevato può essere usata per le comunicazioni specifiche del contesto. Il valore CMF_RESERVED può essere utilizzato per mascherare la parola in ordine basso.

CMF_NORMAL (0x00000000)

0x00000000. Indica il normale funzionamento. Un'estensione del menu di scelta rapida, un'estensione dello spazio dei nomi o un gestore di trascinamento della selezione può aggiungere tutte le voci di menu.

CMF_DEFAULTONLY (0x00000001)

0x00000001. L'utente sta attivando l'azione predefinita, in genere facendo doppio clic. Questo flag fornisce un suggerimento per l'estensione del menu di scelta rapida per aggiungere nulla se non modifica la voce predefinita nel menu. Un'estensione del menu di scelta rapida o un gestore di trascinamento della selezione non deve aggiungere voci di menu se questo valore è specificato. Un'estensione dello spazio dei nomi deve aggiungere al massimo solo l'elemento predefinito.

CMF_VERBSONLY (0x00000002)

0x00000002. Il menu di scelta rapida è quello di un file di scelta rapida (in genere, un file di .lnk). I gestori di menu di scelta rapida devono ignorare questo valore.

CMF_EXPLORE (0x00000004)

0x00000004. La finestra dell'albero di Esplora risorse è presente.

CMF_NOVERBS (0x00000008)

0x00000008. Questo flag è impostato per gli elementi visualizzati nel menu Invia a . I gestori di menu di scelta rapida devono ignorare questo valore.

CMF_CANRENAME (0x00000010)

0x00000010. L'applicazione chiamante supporta la ridenominazione degli elementi. Un menu di scelta rapida o un gestore di trascinamento della selezione deve ignorare questo flag. Un'estensione dello spazio dei nomi deve aggiungere una voce Rename al menu, se applicabile.

CMF_NODEFAULT (0x00000020)

0x00000020. Nessuna voce nel menu è stata impostata come predefinita. Un gestore di trascinamento della selezione deve ignorare questo flag. Un'estensione dello spazio dei nomi non deve impostare alcuna voce di menu come predefinita.

CMF_INCLUDESTATIC (0x00000040)

Questo valore non è disponibile.

Windows Server 2003 e Windows XP: 0x00000040. Viene costruito un menu statico. Solo il browser deve usare questo flag; tutte le altre estensioni del menu di scelta rapida devono ignorarla.

CMF_ITEMMENU (0x00000080)

0x00000080. L'applicazione chiamante richiama un menu di scelta rapida in una voce nella visualizzazione , anziché lo sfondo della visualizzazione.

Windows Server 2003 e Windows XP: Questo valore non è disponibile.

CMF_EXTENDEDVERBS (0x00000100)

0x00000100. L'applicazione chiamante vuole verbi estesi. I verbi normali vengono visualizzati quando l'utente fa clic con il pulsante destro del mouse su un oggetto. Per visualizzare i verbi estesi, l'utente deve fare clic con il pulsante destro del mouse mentre preme il tasto MAIUSC.

CMF_DISABLEDVERBS (0x00000200)

0x00000200. L'applicazione chiamante intende richiamare verbi disabilitati, ad esempio menu legacy.

Windows Server 2003 e Windows XP: Questo valore non è disponibile.

CMF_ASYNCVERBSTATE (0x00000400)

0x00000400. Lo stato del verbo può essere valutato in modo asincrono.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è disponibile.

CMF_OPTIMIZEFORINVOKE (0x00000800)

0x00000800. Informa i gestori di menu di scelta rapida che non supportano la chiamata di un verbo tramite un nome verbo canonico per ignorare IContextMenu::QueryContextMenu nella relativa implementazione.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è disponibile.

CMF_SYNCCASCADEMENU (0x00001000)

0x00001000. Popolare i sottomenu in modo sincrono.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è disponibile.

CMF_DONOTPICKDEFAULT (0x00002000)

0x00002000. Quando non viene specificato alcun verbo in modo esplicito, non usare un verbo predefinito al suo posto.

Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Questo valore non è disponibile.

CMF_RESERVED (0xffff0000)

0xffff0000. Questo flag è una maschera di bit che specifica tutti i bit che non devono essere usati. Questa operazione deve essere utilizzata solo come maschera. Non passare questo valore come valore di parametro.

Valore restituito

Tipo: HRESULT

In caso di esito positivo, restituisce un valore HRESULT con il relativo valore di gravità impostato su SEVERITY_SUCCESS e il relativo valore di codice impostato sull'offset dell'identificatore di comando più grande assegnato, più uno. Ad esempio, se idCmdFirst è impostato su 5 e si aggiungono tre voci al menu con identificatori di comando di 5, 7 e 8, il valore restituito deve essere MAKE_HRESULT(SEVERITY_SUCCESS, 0, 8 - 5 + 1). In caso contrario, restituisce un valore di errore COM.

Commenti

Questo metodo deve chiamare InsertMenu o InsertMenuItem per inserire le voci di menu nel menu specificato da hmenu. Il parametro indexMenu contiene l'indice da utilizzare per la prima voce di menu. L'identificatore di ogni voce di menu deve rientrare nell'intervallo definito da idCmdFirst e idCmdLast.

Una procedura comune consiste nell'impostare il primo identificatore di comando su idCmdFirst (offset pari a zero) e aumentare l'offset per ogni comando aggiuntivo per uno. Questa procedura garantisce che non si superi idCmdLast e mantiene l'intervallo di identificatori disponibili per l'uso da parte di altri gestori. Archiviare gli offset per riferimento perché possono essere usati per identificare il comando nelle chiamate successive a IContextMenu::GetCommandString e IContextMenu::InvokeCommand.

Se shell chiama successivamente un altro gestore di menu di scelta rapida, userà il valore del codice del valore HRESULT restituito per impostare idCmdFirst quando chiama il metodo QueryContextMenu del gestore.

Quando un gestore di menu di scelta rapida aggiunge una voce di menu popup, deve usare IContextMenu::QueryContextMenu per aggiungere almeno una voce al menu per l'inoltro del messaggio WM_INITMENUPOPUP.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shobjidl_core.h (include Shobjidl.h)
DLL Shell32.dll (versione 4.0 o successiva)