Condividi tramite


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 come IInsertionPointID.

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

Vedi anche

Cenni preliminari sulla classe