Come aggiungere tipi di elemento personalizzato all'oggetto lo Snap-In?

Per impostazione predefinita, la creazione guidata oggetto viene creata una classe di dati singoli, derivata da CSnapInItemImpl, per l'oggetto dello snap-in.

In alcuni casi, è necessario implementare uno o più tipi di elemento personalizzato per un oggetto lo snap-in. L'approccio più semplice è quello di copiare e modificare una nuova classe dalla classe dei dati esistenti e fare alcune ulteriori modifiche al progetto. Questa procedura è compiuta in tre passaggi:

Creazione di una classe dell'elemento dati personalizzati

Il primo passo comporta la copia della dichiarazione di classe di dati esistente per l'oggetto dello snap-in e quindi modificare i risultati per creare una classe separata.

La dichiarazione di classe di dati può essere trovata all'inizio del PROJNAME.File h del vostro progetto lo snap-in. Questa dichiarazione di classe, di individuare e copiare e incollare il risultato sotto la prima dichiarazione.

Nella dichiarazione appena incollata, sostituire qualsiasi occorrenze del nome di prima classe con il nome della nuova classe seconda. Per esempio, se la classe di dati di progetto è chiamata CMySnapInData e si desidera creare una classe dell'elemento dati personalizzato denominata CMyCustomSnapInData , prima copiare e incollare la dichiarazione della classe iniziale dei dati. Quindi cercare eventuali occorrenze di CMySnapInData (nella sezione incollata) e sostituirlo conCMyCustomSnapInData.

Attuare i GUID per la classe di dati personalizzata

Oltre alla dichiarazione della classe, la classe di dati ha una dichiarazione GUID e quattro membri dati statici. Alla fine dei NomeProgettosono definiti i membri GUID e dati.File CPP. La seguente è una dichiarazione di esempio:

static const CProjNameGUID_NODETYPE GUID = {0xb386c6b, 0x8633, 0x11d1, {0xb0, 0x8, 0x0, 0xc0, 0x4f, 0xb9, 0x94, 0x36}};
const GUID * nbsp; CProjNameData::m_NODETYPE = & CsdfdsfGUID_NODETYPE;
const TCHAR * CProjNameData::m_SZNODETYPE = _T("0B386C6B-8633-11D1-B008-00C04FB99436");
const TCHAR * CProjNameData::m_SZDISPLAY_NAME = _T("Csdfdsf");
const CLSID * CProjNameData::m_SNAPIN_CLASSID = & CLSID_sdfdsf

Perché questi membri dati dipendono da un GUID, è necessario innanzitutto generare un nuovo GUID (tramite GUIDGEN) e poi copiare e incollare le dichiarazioni di cinque, della classe iniziale dei dati, direttamente sotto. Dopo aver creato una copia, modificalo per usare il GUID appena creato. Ad esempio, utilizzando il codice di esempio precedente e generare un nuovo GUID, il risultato per la seconda classe di dati sarebbe come segue:

static const CMyCustomSnapInGUID_NODETYPE GUID = nbsp;  {0x8dbeb252, 0x9201, 0x11d1, {0xa8, 0xd6, 0x0, 0x60, 0x8, 0x93,
        0x8F, 0xb8}};
const GUID * CMyCustomSnapIn::m_NODETYPE = & CMySnapInGUID_NODETYPE;
const TCHAR * CMyCustomSnapIn::m_SZNODETYPE =
    _T("8DBEB252-9201-11D1-A8D6-006008938FB8");
const TCHAR * CMyCustomSnapIn::m_SZDISPLAY_NAME = _T("CMyCustomSnapIn");
const CLSID * CMyCustomSnapIn::m_SNAPIN_CLASSID = & CLSID_MyCustomSnapIn

Dopo queste modifiche sono complete, c'è un passo di sinistra: modifica del file del Registro di sistema per l'oggetto dello snap-in.

Modificando il.RGS File del progetto lo Snap-In

Lo scopo della.File RGS è quello di registrare l'oggetto dello snap-in e tutti i suoi componenti. Perché si è aggiunti una classe dell'elemento dati personalizzato, è necessario modificare il.File RGS per registrare questa classe troppo.

&Notanbsp;  Il GUID generato nel passaggio precedente viene utilizzato in questo passaggio.

Ci sono due aree nella.File RGS che è necessario modificare. Entrambi si trovano rapidamente cercando il NodeTypes parola chiave.

La prima occorrenza è sotto la NoRemove Snapins sezione. In nidificato NodeTypes sezione, aggiungere il nuovo GUID subito dopo quella esistente, utilizzando lo stesso formato GUID come quello esistente.

La seconda occorrenza è nella NoRemove NodeTypes sezione. Copia il codice trovate in questa sezione, incollarlo in subito dopo e cambiare il GUID di riferimento per il GUID della classe personalizzata.

Questo completa le modifiche del progetto lo snap-in. Dopo una compilazione, si avrà un nuovo tipo di elemento personalizzato.

Index