Condividi tramite


struttura CONTEXTMENUITEM2 (mmc.h)

La struttura CONTEXTMENUITEM2 è introdotta in MMC 2.0.

La struttura CONTEXTMENUITEM2 viene passata al metodo IContextMenuCallback2::AddItem o al metodo IContextMenuProvider::AddItem (ereditato da IContextMenuCallback) per definire una nuova voce di menu, un sottomenu o un punto di inserimento. Il menu di scelta rapida viene creato dalla radice verso il basso, con ogni nuovo elemento che va alla fine del sottomenu o punto di inserimento in cui viene inserito il nuovo elemento. La struttura CONTEXTMENUITEM2 sostituisce la struttura CONTEXTMENUITEM (diversa dal membro strLanguageIndependentName , tutti i membri di CONTEXTMENUITEM2 si trovano in CONTEXTMENUITEM).

Sintassi

typedef struct _CONTEXTMENUITEM2 {
  LPWSTR strName;
  LPWSTR strStatusBarText;
  LONG   lCommandID;
  LONG   lInsertionPointID;
  LONG   fFlags;
  LONG   fSpecialFlags;
  LPWSTR strLanguageIndependentName;
} CONTEXTMENUITEM2;

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 un punto di inserimento.

strStatusBarText

Puntatore a una stringa con terminazione Null che contiene il testo visualizzato sulla barra di stato quando questo elemento è evidenziato. Questo membro può essere NULL.

lCommandID

Valore che specifica l'identificatore del comando per le voci di menu. Se la voce di menu viene aggiunta da IExtendContextMenu::AddMenuItems e quindi selezionata, lCommandID è il parametro 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é i bit specifici nel nuovo ID punto di inserimento devono essere attivati e altri devono essere disattivati.

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

CCM_COMMANDID_MASK_RESERVED (0xFFFF0000)

Non è possibile aggiungere elementi diversi da punti di inserimento e sottomenu quando questi bit vengono impostati.

I bit seguenti nell'ID del punto di inserimento richiedono una gestione speciale per gli elementi che sono punti di inserimento (fSpecialFlags e CCM_SPECIAL_INSERTION_POINT) o sottomenu (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 vengono 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 a un 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 o sottomenu condivisi.

CCM_INSERTIONPOINTID_MASK_CREATE_PRIMARY (0x40000000)

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

CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY (0x20000000)

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

CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY (0x10000000)

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

CCM_INSERTIONPOINTID_MASK_RESERVED (0x0FFF0000)

I punti di inserimento o i sottomenu non possono essere aggiunti con questo set di valori.

lInsertionPointID

Valore che specifica dove deve essere aggiunto il nuovo elemento nel menu di scelta rapida. Gli snap-in possono aggiungere elementi solo 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 ambito e nel riquadro dei risultati della visualizzazione elenco:

0 (zero)

Un lInsertionPointID pari a 0 fa riferimento al menu radice per questo menu di scelta rapida. Il valore 0 può essere utilizzato in modo intercambiabile con CCM_INSERTIONPOINTID_ROOT_MENU. Tenere presente che solo IContextMenuProvider è autorizzato ad aggiungere elementi direttamente al menu radice. Le estensioni possono aggiungere elementi solo ai punti di inserimento e ai sottomenu 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 sottomenu Nuovo . Il sottomenu Nuovo è disponibile nei menu di scelta rapida dell'ambito e dei riquadri 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 dell'ambito e dei riquadri dei risultati.

CCM_INSERTIONPOINTID_PRIMARY_VIEW (0xA0000003)

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

CCM_INSERTIONPOINTID_3RDPARTY_NEW (0x90000001)

Gli snap-in di estensione possono usare questo punto di inserimento per aggiungere elementi alla fine del sottomenu Nuovo . Il sottomenu Nuovo è 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 alla fine del sottomenu Tutte le attività .

CCM_INSERTIONPOINTID_ROOT_MENU (0x80000000)

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

Né le estensioni primarie né le estensioni di terze parti possono 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

L'elemento creato è un sottomenu nel menu di scelta rapida. Le voci di menu, i punti di inserimento e altri sottomenu possono essere aggiunti al sottomenu creato; La nuova voce di menu, il sottomenu o il punto di inserimento devono usare il membro lCommandID del sottomenu creato come valore del membro lInsertionPointID .

MF_BITMAP

Questi flag non sono supportati; IContextMenuCallback2::AddItem restituirà E_INVALIDARG.

MF_OWNERDRAW

Questi flag non sono supportati; IContextMenuCallback2::AddItem restituirà E_INVALIDARG.

MF_SEPARATOR

Disegna una linea separatore orizzontale.

Solo IContextMenuProvider può aggiungere voci di menu con MF_SEPARATOR impostato.

I flag seguenti funzionano nello stesso modo in cui funzionano 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 riduce la voce di menu.

MF_ENABLED

Abilita la voce di menu in modo che possa essere selezionata, ripristinandola dallo stato disattivato.

MF_GRAYED

Disabilita la voce di menu, disattivandola 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, un sottomenu o un menu di scelta rapida, una linea verticale separa la nuova colonna dalla colonna precedente.

MF_MENUBREAK

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

MF_UNCHECKED

Non seleziona l'elemento (impostazione predefinita).

Non è possibile usare insieme i gruppi di flag seguenti:

  • 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 singolo separatore.

Solo IContextMenuProvider può aggiungere separatori, speciali o altrimenti.

CCM_SPECIAL_SUBMENU (0x0002)

Se questo sottomenu è vuoto, viene visualizzato dimmed; è valido solo per gli elementi MF_POPUP .

CCM_SPECIAL_DEFAULT_ITEM (0x0004)

Si tratta della voce di menu predefinita. Se più di una voce di menu specifica 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. Questo flag crea un nuovo punto di inserimento alla fine del punto di inserimento o del sottomenu identificato da lInsertionPointID. È possibile aggiungere nuove voci di menu, sottomenus o punti di inserimento al punto di inserimento creato; la nuova voce di menu, il sottomenu o il punto di inserimento devono usare il membro lCommandID del punto di inserimento creato come valore membro lInsertionPointID .

CCM_SPECIAL_TESTONLY = 0x0010

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

strLanguageIndependentName

Nome indipendente dalla lingua della voce di menu. Recuperare questo valore nelle applicazioni MMC 2.0 Automation Object Model recuperando la proprietà MenuItem.LanguageIndependentName . Il membro strLanguageIndependentName non può essere NULL o una stringa vuota a meno che non venga aggiunto un separatore o un punto di inserimento; in caso contrario, il metodo IContextMenuCallback::AddItem avrà esito negativo con E_INVALIDARG come valore restituito.

Requisiti

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

Vedi anche

IContextMenuCallback2

IContextMenuProvider

IExtendContextMenu

Uso dei menu di scelta rapida