Comment ajouter des Types d'élément personnalisé à l'objet enfichable?

Par défaut, l'Assistant objet ATL crée une classe de données unique, dérivée de CSnapInItemImpl, pour l'objet enfichable.

Dans certains cas, vous devez implémenter un ou plusieurs types d'élément personnalisé pour un objet de composant logiciel enfichable. L'approche la plus simple est de copier et de modifier une nouvelle classe de la classe de données existantes et de faire quelques modifications supplémentaires au projet. Cette procédure s'effectue en trois étapes:

Création d'une classe de données d'élément personnalisé

La première étape implique la copie de la déclaration de la classe de données existantes pour l'objet enfichable et modifier ensuite les résultats pour créer une catégorie distincte.

La déclaration de classe de données se trouvent au début de la PROJNAME.Dossier h de votre projet de composant logiciel enfichable. Recherchez la déclaration de classe et de copier et de coller le résultat au-dessous de la première déclaration.

Dans la déclaration de nouveau collée, remplacer les occurrences du nom de première classe avec le nom de la nouvelle classe de seconde. Par exemple, si votre classe de données de projet est appelée CMySnapInData et que vous voulez créer une classe d'élément de données personnalisé appelée CMyCustomSnapInData , tout d'abord copier et de coller la déclaration de la classe de données initiales. Puis rechercher les occurrences de CMySnapInData (dans la section collée) et le remplacer avecCMyCustomSnapInData.

Mettre en œuvre les GUID pour la classe de données personnalisée

En plus de la déclaration de classe, la classe de données a une déclaration de GUID et quatre membres de données statiques. Les membres GUID et les données sont définies à la fin de la PROJNAME.Fichier de la RPC. Ce qui suit est une déclaration de l'exemple:

static const CProjNameGUID_NODETYPE de GUID = {0xb386c6b, 0x8633, 0x11d1, {0xb0, 0 x 8, 0 x 0, 0xc0, 0x4f, 0xb9, 0x94, 0x36}} ;
GUID const * 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

Parce que ces membres de données dépendent d'un GUID, vous devez d'abord générer un nouveau GUID (à l'aide de GUIDGEN) et ensuite copier et coller les déclarations de cinq, de la classe de données initiales, directement sous. Après que vous créez une copie, modifiez-le pour utiliser le GUID nouvellement créé. Par exemple, à l'aide de l'exemple de code précédent et générer un nouveau GUID pour la deuxième classe de données, le résultat serait la suivante:

static const GUID CMyCustomSnapInGUID_NODETYPE = nbsp ;  {0x8dbeb252, 0x9201, 0x11d1, {0xa8, 0xd6, 0 x 0, 0x60, 0 x 8, 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

Après que ces modifications sont terminées, il y a un pas à gauche : modifier le fichier de Registre pour le composant logiciel enfichable objet.

Modifier le.Fichier RGS du projet Snap-In

Le but de la.Fichier RGS est d'enregistrer le composant logiciel enfichable objet et tous ses composants. Parce que vous avez ajouté une classe d'élément de données personnalisées, vous devez modifier le.Fichier RGS pour inscrire cette classe trop.

&Notenbsp ;  Le GUID que vous avez généré à l'étape précédente est utilisé dans cette étape.

Il y a deux zones dans le.Vous devez modifier le fichier RGS. Les deux se trouvent rapidement en recherchant le NodeTypes mot clé.

La première occurrence est sous la NoRemove Snapins section. Dans l'imbriquées NodeTypes section, ajoute le nouveau GUID immédiatement après celui existant, en utilisant le même format GUID que celui existant.

La deuxième occurrence est dans la NoRemove NodeTypes article. Copie le code trouvé dans cette section, collez-le dans immédiatement après et modifier le GUID référencé le GUID de la classe personnalisée.

Ceci termine les modifications du projet snap-in. Après une compilation réussie, vous avez un nouveau type d'élément personnalisé.

Index