Classe CSnapInItemImpl
Questa classe fornisce metodi per l'implementazione di un oggetto node snap-in.
Importante
Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.
Sintassi
template <class T, BOOL bIsExtension = FALSE>
class ATL_NO_VTABLE CSnapInItemImpl : public CSnapInItem
Parametri
T
Classe derivata da CSnapInItemImpl
.
bIsExtension
TRUE se l'oggetto è un'estensione snap-in; in caso contrario FALSE.
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CSnapInItemImpl::CSnapInItemImpl | Costruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CSnapInItemImpl::AddMenuItems | Aggiunge voci di menu a un menu di scelta rapida. |
CSnapInItemImpl::Command | Chiamato dalla console quando viene selezionata una voce di menu personalizzata. |
CSnapInItemImpl::CreatePropertyPages | Aggiunge pagine alla finestra delle proprietà dello snap-in. |
CSnapInItemImpl::FillData | Copia le informazioni sull'oggetto snap-in in un flusso specificato. |
CSnapInItemImpl::GetResultPaneInfo | Recupera la RESULTDATAITEM struttura dello snap-in. |
CSnapInItemImpl::GetResultViewType | Determina il tipo di visualizzazione utilizzato dal riquadro dei risultati. |
CSnapInItemImpl::GetScopePaneInfo | Recupera la SCOPEDATAITEM struttura dello snap-in. |
CSnapInItemImpl::Notify | Chiamato dalla console per notificare allo snap-in le azioni eseguite dall'utente. |
CSnapInItemImpl::QueryPagesFor | Chiamato per verificare se il nodo snap-in supporta le pagine delle proprietà. |
CSnapInItemImpl::SetMenuInsertionFlags | Modifica i flag di inserimento dei menu per un oggetto snap-in. |
CSnapInItemImpl::SetToolbarButtonInfo | Imposta le informazioni del pulsante della barra degli strumenti specificato. |
CSnapInItemImpl::UpdateMenuState | Aggiorna lo stato di una voce di menu di scelta rapida. |
CSnapInItemImpl::UpdateToolbarButton | Aggiorna lo stato del pulsante della barra degli strumenti specificato. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CSnapInItemImpl::m_bstrDisplayName | Nome dell'oggetto snap-in. |
CSnapInItemImpl::m_resultDataItem | Struttura di Windows RESULTDATAITEM utilizzata dall'oggetto CSnapInItemImpl . |
CSnapInItemImpl::m_scopeDataItem | Struttura di Windows SCOPEDATAITEM utilizzata dall'oggetto CSnapInItemImpl . |
Osservazioni:
CSnapInItemImpl
fornisce un'implementazione di base per un oggetto nodo snap-in, ad esempio l'aggiunta di voci di menu e barre degli strumenti e l'inoltro dei comandi per il nodo snap-in alla funzione del gestore appropriata. Queste funzionalità vengono implementate usando diverse interfacce e tipi di mappa. L'implementazione predefinita gestisce le notifiche inviate all'oggetto node determinando l'istanza corretta della classe derivata e quindi inoltrando il messaggio all'istanza corretta.
Gerarchia di ereditarietà
CSnapInItem
CSnapInItemImpl
Requisiti
Intestazione: atlsnap.h
CSnapInItemImpl::AddMenuItems
Questo metodo implementa la funzione Win32 IExtendContextMenu::AddMenuItems.
AddMenuItems(
LPCONTEXTMENUCALLBACK piCallback,
long* pInsertionAllowed,
DATA_OBJECT_TYPES type);
Parametri
piCallback
[in] Puntatore a IContextMenuCallback
che può aggiungere elementi al menu di scelta rapida.
pInsertionAllowed
[in, out] Identifica i punti di inserimento delle voci di menu definiti da Microsoft Management Console (MMC). Può trattarsi di una combinazione dei flag seguenti:
CCM_INSERTIONALLOWED_TOP Gli elementi possono essere inseriti nella parte superiore di un menu di scelta rapida.
CCM_INSERTIONALLOWED_NEW gli elementi possono essere inseriti nel sottomenu Crea nuovo.
CCM_INSERTIONALLOWED_TASK Gli elementi possono essere inseriti nel sottomenu Attività.
CCM_INSERTIONALLOWED_VIEW Gli elementi possono essere inseriti nel menu di visualizzazione della barra degli strumenti o nel sottomenu Visualizza del menu di scelta rapida del riquadro dei risultati.
type
[in] Specifica il tipo di oggetto. Può avere uno dei valori seguenti:
CCT_SCOPE Oggetto dati per il contesto del riquadro ambito.
CCT_RESULT oggetto Data per il contesto del riquadro dei risultati.
CCT_SNAPIN_MANAGER oggetto Data per il contesto di gestione snap-in.
CCT_UNINITIALIZED oggetto Data ha un tipo non valido.
CSnapInItemImpl::Command
Questo metodo implementa la funzione Win32 IExtendContextMenu::Command.
Command(long lCommandID, DATA_OBJECT_TYPES type);
Parametri
lCommandID
[in] Specifica l'identificatore del comando della voce di menu.
type
[in] Specifica il tipo di oggetto. Può avere uno dei valori seguenti:
CCT_SCOPE Oggetto dati per il contesto del riquadro ambito.
CCT_RESULT oggetto Data per il contesto del riquadro dei risultati.
CCT_SNAPIN_MANAGER oggetto Data per il contesto di gestione snap-in.
CCT_UNINITIALIZED oggetto Data ha un tipo non valido.
CSnapInItemImpl::CreatePropertyPages
Questo metodo implementa la funzione Win32 IExtendPropertySheet::CreatePropertyPages.
CreatePropertyPages(
LPPROPERTYSHEETCALLBACK lpProvider,
long handle,
IUnknown* pUnk,
DATA_OBJECT_TYPES type);
Parametri
lpProvider
[in] Puntatore all'interfaccia IPropertySheetCallback
.
handle
[in] Specifica l'handle utilizzato per instradare il messaggio di notifica MMCN_PROPERTY_CHANGE alla classe di dati appropriata.
Punk
[in] Puntatore all'interfaccia sull'oggetto IExtendPropertySheet
che contiene informazioni di contesto sul nodo.
type
[in] Specifica il tipo di oggetto. Può avere uno dei valori seguenti:
CCT_SCOPE Oggetto dati per il contesto del riquadro ambito.
CCT_RESULT oggetto Data per il contesto del riquadro dei risultati.
CCT_SNAPIN_MANAGER oggetto Data per il contesto di gestione snap-in.
CCT_UNINITIALIZED oggetto Data ha un tipo non valido.
CSnapInItemImpl::CSnapInItemImpl
Costruisce un oggetto CSnapInItemImpl
.
CSnapInItemImpl();
CSnapInItemImpl::FillData
Questa funzione viene chiamata per recuperare informazioni sull'elemento.
FillData(CLIPFORMAT cf, LPSTREAM pStream);
Parametri
cfr
[in] Formato (testo, rtf o rtf con elementi OLE) degli Appunti.
pStream
[in] Puntatore al flusso contenente i dati dell'oggetto.
Osservazioni:
Per implementare correttamente questa funzione, copiare le informazioni corrette nel flusso (pStream), a seconda del formato degli Appunti indicato da cf.
CSnapInItemImpl::GetResultViewType
Chiamare questa funzione per recuperare il tipo di visualizzazione per il riquadro dei risultati dell'oggetto snap-in.
GetResultViewType(
LPOLESTR* ppViewType,
long* pViewOptions);
Parametri
ppViewType
[out] Puntatore all'indirizzo del tipo di visualizzazione restituito.
pViewOptions
[out] Puntatore all'enumerazione MMC_VIEW_OPTIONS, che fornisce alla console opzioni specificate dallo snap-in proprietario. I valori validi sono i seguenti:
MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 Indica alla console di non presentare opzioni standard di visualizzazione elenco nel menu Visualizza . Consente allo snap-in di visualizzare le proprie visualizzazioni personalizzate solo nel riquadro visualizzazione risultati. Questo è l'unico flag di opzione definito in questo momento.
MMC_VIEW_OPTIONS_NONE = 0 Consente le opzioni di visualizzazione predefinite.
CSnapInItemImpl::GetScopePaneInfo
Chiamare questa funzione per recuperare la SCOPEDATAITEM
struttura dello snap-in.
GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);
Parametri
pScopeDataItem
[out] Puntatore alla SCOPEDATAITEM
struttura dell'oggetto CSnapInItemImpl
.
CSnapInItemImpl::GetResultPaneInfo
Chiamare questa funzione per recuperare la RESULTDATAITEM
struttura dello snap-in.
GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);
Parametri
pResultDataItem
[out] Puntatore alla RESULTDATAITEM
struttura dell'oggetto CSnapInItemImpl
.
CSnapInItemImpl::m_bstrDisplayName
Contiene la stringa visualizzata per l'elemento del nodo.
CComBSTR m_bstrDisplayName;
CSnapInItemImpl::m_scopeDataItem
Struttura SCOPEDATAITEM
dell'oggetto dati snap-in.
SCOPEDATAITEM m_scopeDataItem;
CSnapInItemImpl::m_resultDataItem
Struttura RESULTDATAITEM dell'oggetto dati snap-in.
RESULTDATAITEM m_resultDataItem;
CSnapInItemImpl::Notify
Chiamato quando l'oggetto snap-in viene usato dall'utente.
STDMETHOD(Notify)(
MMC_NOTIFY_TYPE event,
long arg,
long param,
IComponentData* pComponentData,
IComponent* pComponent,
DATA_OBJECT_TYPES type) = 0;
Parametri
event
[in] Identifica un'azione eseguita da un utente. Sono possibili le notifiche seguenti:
MMCN_ACTIVATE Inviato quando viene attivata e disattivata una finestra.
MMCN_ADD_IMAGES Inviato per aggiungere immagini al riquadro dei risultati.
MMCN_BTN_CLICK Inviato quando l'utente fa clic su uno dei pulsanti della barra degli strumenti.
MMCN_CLICK Inviato quando un utente fa clic su un pulsante del mouse su un elemento della visualizzazione elenco.
MMCN_DBLCLICK Inviato quando un utente fa doppio clic su un pulsante del mouse su un elemento della visualizzazione elenco.
MMCN_DELETE Inviato per informare lo snap-in che l'oggetto deve essere eliminato.
MMCN_EXPAND Inviato quando una cartella deve essere espansa o contrattata.
MMCN_MINIMIZED Inviato quando una finestra viene ridotta a icona o ingrandita.
MMCN_PROPERTY_CHANGE Inviato per notificare a un oggetto snap-in che la visualizzazione dell'oggetto snap-in sta per cambiare.
MMCN_REMOVE_CHILDREN Inviato quando lo snap-in deve eliminare l'intero sottoalbero aggiunto sotto il nodo specificato.
MMCN_RENAME Invia la prima volta per eseguire una query per una ridenominazione e la seconda volta per eseguire la ridenominazione.
MMCN_SELECT Inviato quando viene selezionato un elemento nel riquadro ambito o visualizzazione risultati.
MMCN_SHOW Inviato quando un elemento di ambito viene selezionato o deselezionato per la prima volta.
MMCN_VIEW_CHANGE Inviato quando lo snap-in può aggiornare tutte le visualizzazioni quando si verifica una modifica.
arg
[in] Dipende dal tipo di notifica.
param
[in] Dipende dal tipo di notifica.
pComponentData
[out] Puntatore all'oggetto che implementa IComponentData
. Questo parametro è NULL se la notifica non viene inoltrata da IComponentData::Notify
.
pComponent
[out] Puntatore all'oggetto che implementa IComponent
. Questo parametro è NULL se la notifica non viene inoltrata da IComponent::Notify
.
type
[in] Specifica il tipo di oggetto. Può avere uno dei valori seguenti:
CCT_SCOPE Oggetto dati per il contesto del riquadro ambito.
CCT_RESULT oggetto Data per il contesto del riquadro dei risultati.
CCT_SNAPIN_MANAGER oggetto Data per il contesto di gestione snap-in.
CCT_UNINITIALIZED oggetto Data ha un tipo non valido.
CSnapInItemImpl::QueryPagesFor
Chiamato per verificare se il nodo snap-in supporta le pagine delle proprietà.
QueryPagesFor(DATA_OBJECT_TYPES type);
CSnapInItemImpl::SetMenuInsertionFlags
Chiamare questa funzione per modificare i flag di inserimento del menu, specificati da pInsertionAllowed, per l'oggetto snap-in.
void SetMenuInsertionFlags(
bool bBeforeInsertion,
long* pInsertionAllowed);
Parametri
bBeforeInsertion
[in] Diverso da zero se la funzione deve essere chiamata prima che gli elementi vengano aggiunti al menu di scelta rapida; in caso contrario, 0.
pInsertionAllowed
[in, out] Identifica i punti di inserimento delle voci di menu definiti da Microsoft Management Console (MMC). Può trattarsi di una combinazione dei flag seguenti:
CCM_INSERTIONALLOWED_TOP Gli elementi possono essere inseriti nella parte superiore di un menu di scelta rapida.
CCM_INSERTIONALLOWED_NEW gli elementi possono essere inseriti nel sottomenu Crea nuovo.
CCM_INSERTIONALLOWED_TASK Gli elementi possono essere inseriti nel sottomenu Attività.
CCM_INSERTIONALLOWED_VIEW Gli elementi possono essere inseriti nel menu di visualizzazione della barra degli strumenti o nel sottomenu Visualizza del menu di scelta rapida del riquadro dei risultati.
Osservazioni:
Se si sviluppa uno snap-in primario, è possibile reimpostare uno dei flag di inserimento come modo per limitare il tipo di voci di menu che un'estensione di terze parti può aggiungere. Ad esempio, lo snap-in primario può cancellare il flag CCM_INSERTIONALLOWED_NEW per impedire alle estensioni di aggiungere voci di menu Create New personalizzate.
Non è consigliabile tentare di impostare i bit in pInsertionAllowed originariamente cancellati. Le versioni future di MMC possono usare bit non attualmente definiti, pertanto non è consigliabile modificare i bit attualmente non definiti.
CSnapInItemImpl::SetToolbarButtonInfo
Chiamare questa funzione per modificare gli stili dei pulsanti della barra degli strumenti, dell'oggetto snap-in, prima della creazione della barra degli strumenti.
void SetToolbarButtonInfo(
UINT id,
BYTE* fsState,
BYTE* fsType);
Parametri
id
[in] ID del pulsante della barra degli strumenti da impostare.
fsState
[in] Flag di stato del pulsante. Può essere uno o più degli elementi seguenti:
TBSTATE_CHECKED Il pulsante ha lo stile TBSTYLE_CHECKED e viene premuto.
TBSTATE_ENABLED Il pulsante accetta l'input dell'utente. Un pulsante che non dispone di questo stato non accetta l'input dell'utente e è disattivato.
TBSTATE_HIDDEN Il pulsante non è visibile e non può ricevere l'input dell'utente.
TBSTATE_INDETERMINATE Il pulsante è disattivato.
TBSTATE_PRESSED Il pulsante viene premuto.
TBSTATE_WRAP un'interruzione di riga segue il pulsante. Il pulsante deve avere anche il TBSTATE_ENABLED.
fsType
[in] Flag di stato del pulsante. Può essere uno o più degli elementi seguenti:
TBSTYLE_BUTTON Crea un pulsante di pressione standard.
TBSTYLE_CHECK Crea un pulsante che alterna gli stati premuti e non premuti ogni volta che l'utente lo fa clic. Il pulsante ha un colore di sfondo diverso quando si trova nello stato premuto.
TBSTYLE_CHECKGROUP Crea un pulsante di controllo che rimane premuto finché non viene premuto un altro pulsante nel gruppo.
TBSTYLE_GROUP Crea un pulsante che rimane premuto finché non viene premuto un altro pulsante nel gruppo.
TBSTYLE_SEP Crea un separatore, fornendo una piccola distanza tra i gruppi di pulsanti. Un pulsante con questo stile non riceve l'input dell'utente.
CSnapInItemImpl::UpdateMenuState
Chiamare questa funzione per modificare una voce di menu prima che venga inserita nel menu di scelta rapida dell'oggetto snap-in.
void UpdateMenuState(
UINT id,
LPTSTR pBuf,
UINT* flags);
Parametri
id
[in] ID della voce di menu da impostare.
pBuf
[in] Puntatore alla stringa per la voce di menu da aggiornare.
flags
[in] Specifica i nuovi flag di stato. Può trattarsi di una combinazione dei flag seguenti:
MF_POPUP Specifica che si tratta di un sottomenu all'interno del 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
oggetto comeIInsertionPointID
.MF_BITMAP e MF_OWNERDRAW Questi flag non sono consentiti e genereranno un valore restituito di E_INVALIDARG.
MF_SEPARATOR Disegna una linea di divisione orizzontale. È consentito aggiungere solo
IContextMenuProvider
voci di menu con MF_SEPARATOR impostato.MF_CHECKED Posiziona un segno di spunta accanto alla 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 dallo stato grigio.
MF_GRAYED Disabilita la voce di menu, in grigio in modo che non possa essere selezionata.
MF_MENUBARBREAK Funzioni come il flag di MF_MENUBREAK per una barra dei menu. Per un menu a discesa, un sottomenu o un menu di scelta rapida, la nuova colonna è separata dalla colonna precedente in base a una linea verticale.
MF_MENUBREAK Inserisce l'elemento 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 inserisce un segno di spunta accanto all'elemento (impostazione predefinita).
Non è possibile utilizzare insieme i gruppi di flag seguenti:
MF_DISABLED, MF_ENABLED e MF_GRAYED.
MF_MENUBARBREAK e MF_MENUBREAK.
MF_CHECKED e MF_UNCHECKED.
CSnapInItemImpl::UpdateToolbarButton
Chiamare questa funzione per modificare un pulsante della barra degli strumenti dell'oggetto snap-in prima che venga visualizzato.
BOOL UpdateToolbarButton(UINT id, BYTE fsState);
Parametri
id
Specifica l'ID pulsante del pulsante della barra degli strumenti da aggiornare.
fsState
Specifica uno stato del pulsante della barra degli strumenti. Se questo stato deve essere impostato, restituire TRUE. Può trattarsi di una combinazione dei flag seguenti:
ENABLED Il pulsante accetta l'input dell'utente. Un pulsante che non dispone di questo stato non accetta l'input dell'utente e è disattivato.
CHECKED Il pulsante ha lo stile CHECKED e viene premuto.
HIDDEN Il pulsante non è visibile e non può ricevere l'input dell'utente.
INDETERMINATE Il pulsante è disattivato.
BUTTONPRESSED Il pulsante viene premuto.