¿Cómo agregar tipos de elemento personalizado al objeto de complemento?

De forma predeterminada, el Asistente para objetos ATL crea una clase de datos único, derivada de CSnapInItemImpl, para el complemento de objeto.

En algunos casos, deberás aplicar uno o más tipos de elemento personalizado para un objeto de complemento. El enfoque más sencillo consiste en copiar y modificar una clase nueva de la clase de datos existentes y realizar algunas modificaciones adicionales al proyecto. Este procedimiento se lleva a cabo en tres pasos:

Crear una clase personalizada de datos elemento

El primer paso consiste en copiar la declaración de la clase de datos existentes para el complemento de objeto y, a continuación, modificar los resultados para crear una clase independiente.

La declaración de la clase de datos se puede encontrar en el comienzo de la NOMBRE_PROYECTO.Archivo h de su proyecto de complemento. Busque esta declaración de clase y copiar y pegar el resultado por debajo de la primera declaración.

En la Declaración recién pegada, reemplazar cualquier las apariciones del nombre de la primera clase con el nombre de la nueva clase de segundo. Por ejemplo, si la clase de datos de proyecto se llama CMySnapInData y desea crear una clase de elemento de datos personalizado llamada CMyCustomSnapInData , copiar y pegar la declaración de la clase de datos iniciales. Busque cualquier apariciones de CMySnapInData (en la sección de pegado) y reemplazarlo conCMyCustomSnapInData.

Aplicación de los GUID de la clase de datos personalizados

Además de la declaración de clase, la clase de datos tiene una declaración de GUID y cuatro miembros de datos estáticos. Los miembros GUID y datos se definen al final de la NOMBRE_PROYECTO.Archivo CPP. La siguiente es una declaración de ejemplo:

static const GUID CProjNameGUID_NODETYPE = {0xb386c6b, 0x8633, 0x11d1, {0xb0, 0x8, 0 x 0, 0xC080, 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

Debido a estos miembros de datos dependen de un GUID, necesita primero generar un nuevo GUID (mediante GUIDGEN) y, a continuación, copie y pegue las cinco declaraciones de la clase de datos iniciales, directamente por debajo. Después de crear una copia, modificarla para que utilice el GUID recién creado. Por ejemplo, utilizando el ejemplo de código anterior y generar un nuevo GUID, el resultado de la segunda clase de datos sería el siguiente:

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

Una vez finalizadas estas modificaciones, hay un paso a la izquierda: modificar el archivo de registro para el objeto de complemento.

Modificación de la.Archivo RGS del proyecto Snap-In

El propósito de la.Archivo RGS es registrar el complemento objeto y todos sus componentes. Ya ha agregado una clase de elemento de datos personalizados, es necesario modificar el.Archivo RGS para registrar esta clase demasiado.

&Notanbsp;  El GUID generado en el paso anterior se utiliza en este paso.

Hay dos áreas en el.Es necesario modificar el archivo RGS. Ambos pueden encontrarse rápidamente buscando la NodeTypes palabra clave.

Es la primera aparición en el NoRemove Snapins sección. En el anidado NodeTypes sección, añadir el nuevo GUID inmediatamente después de la existente, utilizando el mismo formato GUID como la existente.

Es la segunda aparición en el NoRemove NodeTypes sección. Copia el código se encuentra en esta sección, pegarlo en inmediatamente después y cambiar el GUID que se hace referencia en el GUID de la clase personalizada.

Con esto finalizamos las modificaciones del proyecto de complemento. Después de una compilación exitosa, tendrá un nuevo tipo de elemento personalizado.

Index