Condividi tramite


Struttura CONTEXTMENUITEM (mmc.h)

La struttura CONTEXTMENUITEM viene passata al metodo IContextMenuCallback::AddItem o al metodo IContextMenuProvider::AddItem (ereditato da IContextMenuCallback) per definire una nuova voce di menu, sottomenu o punto di inserimento. Il menu di scelta rapida viene compilato dalla radice verso il basso, con ogni nuovo elemento che passa alla fine del sottomenu o del punto di inserimento in cui viene inserito.

Sintassi

typedef struct _CONTEXTMENUITEM {
  LPWSTR strName;
  LPWSTR strStatusBarText;
  LONG   lCommandID;
  LONG   lInsertionPointID;
  LONG   fFlags;
  LONG   fSpecialFlags;
} CONTEXTMENUITEM;

Members

strName

Puntatore a una stringa con terminazione null contenente il nome della voce di menu o del sottomenu. Questo membro non può essere NULL , ad eccezione di un separatore o di inserimento.

strStatusBarText

Puntatore a una stringa con terminazione null contenente il testo visualizzato nella barra di stato quando questo elemento viene evidenziato. Questo membro può essere NULL.

lCommandID

Valore che specifica l'identificatore del comando per le voci di menu. Se questa voce di menu viene aggiunta da IExtendContextMenu::AddMenuItems e quindi selezionata, questo è l'ID comando passato a IExtendContextMenu::Command. Se questa voce di menu viene aggiunta dall'interfaccia IContextMenuProvider e quindi selezionata, questo è l'ID comando passato a pISelected da IContextMenuProvider::ShowContextMenu. Se si tratta di un punto di inserimento (CCM_SPECIAL_INSERTION_POINT è impostato in fSpecialFlags) o un sottomenu (MF_POPUP è impostato in fFlags), usare lCommandID nelle chiamate successive come lInsertionPointID (per altre informazioni, vedere l'elenco seguente). Leggere attentamente la discussione seguente perché è necessario disattivare bit specifici nel nuovo ID punto di inserimento e altri devono essere disattivati.

Alcuni bit nell'ID comando richiedono una gestione speciale per gli elementi che non sono punti di inserimento o sottomenus.

CCM_COMMANDID_MASK_RESERVED = 0xFFFF0000

Gli elementi diversi da punti di inserimento e sottomenus non possono essere aggiunti quando vengono impostati questi bit.

Alcuni bit nell'ID punto di inserimento richiedono una gestione speciale per gli elementi che sono punti di inserimento (fSpecialFlags e CCM_SPECIAL_INSERTION_POINT) o sottomenus (fFlags e MF_POPUP).

CCM_INSERTIONPOINTID_MASK_SPECIAL = 0xFFFF0000

Comportamento speciale. Gli snap-in possono usare gli altri bit in base alle esigenze.

CCM_INSERTIONPOINTID_MASK_SHARED = 0x80000000

Questi punti di inserimento e sottomenu sono condivisi tra l'autore del menu di scelta rapida, l'estensione primaria e l'estensione di terze parti. Gli elementi aggiunti a un punto di inserimento condiviso o sottomenu sono disponibili per l'autore del menu di scelta rapida, l'estensione primaria e l'estensione di terze parti.

Se questo bit non è impostato, l'interfaccia IContextMenuProvider e ogni estensione può usare lo stesso ID. Ogni ID fa riferimento a un punto di inserimento o a un sottomenu diverso.

Solo l'autore del menu di scelta rapida e lo snap-in primario possono creare punti di inserimento condivisi o sottomenus.

CCM_INSERTIONPOINTID_MASK_CREATE_PRIMARY = 0x40000000

Questo bit deve essere impostato per i punti di inserimento condivisi e i sottomenus creati dallo snap-in primario e non per quelli creati dall'autore del menu di scelta rapida. Ciò impedisce conflitti ID tra le due origini dei punti di inserimento condivisi e dei sottomenu.

CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY = 0x20000000

Consentire allo snap-in primario di aggiungere elementi a un punto di inserimento condiviso o a un sottomenu.

CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY = 0x10000000

Consenti snap-in di estensione di aggiungere elementi a un punto di inserimento condiviso o a un sottomenu.

CCM_INSERTIONPOINTID_MASK_RESERVED = 0x0FFF0000

Non è possibile aggiungere punti di inserimento o sottomenus con uno di questi bit impostati.

lInsertionPointID

Valore che specifica dove deve essere aggiunto il nuovo elemento nel menu di scelta rapida. Gli snap-in possono aggiungere solo elementi ai punti di inserimento creati dall'autore del menu o dallo snap-in primario. Di seguito sono riportati i punti di inserimento creati da MMC nei menu di scelta rapida predefiniti per gli elementi nel riquadro dell'ambito e nel riquadro dei risultati della visualizzazione elenco:

0 (zero)

Un lInsertionPointID di zero fa riferimento al menu radice per questo menu di scelta rapida. Zero può essere usato in modo intercambiabile con CCM_INSERTIONPOINTID_ROOT_MENU. Tenere presente che solo l'interfaccia IContextMenuProvider può aggiungere elementi direttamente al menu radice. Le estensioni possono aggiungere solo elementi ai punti di inserimento e ai sottomenus aggiunti al menu radice da IContextMenuProvider o da MMC.

CCM_INSERTIONPOINTID_PRIMARY_TOP = 0xA0000000

Lo snap-in primario può usare questo punto di inserimento per aggiungere elementi alla parte superiore del menu di scelta rapida principale.

CCM_INSERTIONPOINTID_PRIMARY_NEW = 0xA0000001

Lo snap-in primario può usare questo punto di inserimento per aggiungere elementi all'inizio del nuovo sottomenu. Il nuovo sottomenu è disponibile nei menu di scelta rapida nel riquadro di ambito e nel riquadro dei risultati.

CCM_INSERTIONPOINTID_PRIMARY_TASK = 0xA0000002

Lo snap-in primario può usare questo punto di inserimento per aggiungere elementi all'inizio del sottomenu Tutte le attività. Il sottomenu Tutte le attività è disponibile nei menu di scelta rapida sia nel riquadro ambito che nel riquadro dei risultati.

CCM_INSERTIONPOINTID_PRIMARY_VIEW = 0xA0000003

Lo snap-in primario può usare questo punto di inserimento per aggiungere elementi al menu a discesa Visualizza . Se l'utente fa clic sul menu Visualizza sulla barra degli strumenti, questo punto di inserimento sarà presente, ma i punti di inserimento New and All Tasks non verranno visualizzati.

CCM_INSERTIONPOINTID_3RDPARTY_NEW = 0x90000001

Gli snap-in di estensione possono usare questo punto di inserimento per aggiungere elementi nella parte inferiore del nuovo sottomenu. Il nuovo sottomenu è presente solo per i menu di scelta rapida nel riquadro ambito e non per i menu di scelta rapida nel riquadro dei risultati.

CCM_INSERTIONPOINTID_3RDPARTY_TASK = 0x90000002

Gli snap-in di estensione possono usare questo punto di inserimento per aggiungere elementi nella parte inferiore del sottomenu Tutte le attività.

CCM_INSERTIONPOINTID_ROOT_MENU = 0x80000000

L'interfaccia IContextMenuProvider può usare questo punto di inserimento per aggiungere elementi al menu radice.

Nessuna estensione primaria né estensioni di terze parti può aggiungere elementi al menu radice, ad eccezione dei punti di inserimento aggiunti da IContextMenuProvider.

fFlags

Valore che specifica uno o più flag di stile seguenti:

MF_POPUP

Valore che specifica che si tratta di un sottomenu nel menu di scelta rapida. Le voci di menu, i punti di inserimento e altri sottomenu possono essere aggiunti a questo sottomenu usando il relativo lCommandID come lInsertionPointID.

MF_BITMAP

MF_OWNERDRAW

Questi flag non sono supportati e generano IContextMenuCallback::AddItem che restituisce E_INVALIDARG.

MF_SEPARATOR

Disegna una linea separatore orizzontale.

Solo l'interfaccia IContextMenuProvider può aggiungere voci di menu con MF_SEPARATOR set.

I flag seguenti funzionano nello stesso modo in cui vengono eseguite nell'API Di Windows:

MF_CHECKED

Seleziona la voce di menu.

MF_DISABLED

Disabilita la voce di menu in modo che non possa essere selezionata, ma il flag non lo grigio.

MF_ENABLED

Abilita la voce di menu in modo che possa essere selezionata, ripristinandola da uno stato grigio.

MF_GRAYED

Disabilita la voce di menu, in grigio in modo che non possa essere selezionata.

MF_MENUBARBREAK

Funziona come il flag MF_MENUBREAK per una barra dei menu. Per un menu a discesa, sottomenu o menu di scelta rapida, la nuova colonna viene separata dalla colonna precedente in base a una riga verticale.

MF_MENUBREAK

Places l'elemento in una nuova riga (per una barra dei menu) o in una nuova colonna (per un menu a discesa, sottomenu o menu di scelta rapida) senza separare le colonne.

MF_UNCHECKED

Non seleziona l'elemento (impostazione predefinita).

I gruppi di flag seguenti non possono essere usati insieme:

  • MF_DISABLED, MF_ENABLED e MF_GRAYED
  • MF_MENUBARBREAK e MF_MENUBREAK
  • MF_CHECKED e MF_UNCHECKED

fSpecialFlags

Valore che specifica uno o più flag seguenti:

CCM_SPECIAL_SEPARATOR = 0x0001

Ignorare tutti gli altri parametri tranne lInsertionPointID. Aggiungere un separatore alla fine del menu o al punto di inserimento specificato. I separatori posizionati nella parte superiore o inferiore di un menu o di un sottomenu non verranno visualizzati. I separatori senza voci di menu tra di essi verranno compressi in un unico separatore.

Solo l'interfaccia IContextMenuProvider può aggiungere separatori, speciali o in altro modo.

CCM_SPECIAL_SUBMENU = 0x0002

Se questo sottomenu è vuoto, verrà disabilitato e disattivato. Questa opzione è valida solo per gli elementi di MF_POPUP .

CCM_SPECIAL_DEFAULT_ITEM = 0x0004

Voce di menu predefinita. Se più voci di menu specificano questo flag, l'ultimo elemento in ogni sottomenu ha la precedenza.

CCM_SPECIAL_INSERTION_POINT = 0x0008

Ignorare tutti gli altri parametri tranne lCommandID e lInsertionPointID. Verrà creato un nuovo punto di inserimento alla fine del punto di inserimento o del sottomenu identificato da lInsertionPointID.

Le chiamate successive possono usare il parametro lCommandID da questa chiamata come lInsertionPointID e inserire le proprie voci di menu, sottomenu o punti di inserimento in questo punto del menu.

CCM_SPECIAL_TESTONLY = 0x0010

Convalidare i parametri dell'elemento, ma non aggiungere la voce di menu. Restituisce il codice di risultato che indica se l'aggiunta avrebbe avuto esito positivo.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Intestazione mmc.h

Vedi anche

IContextMenuCallback

IContextMenuProvider

IExtendContextMenu

Utilizzo dei menu di scelta rapida