De forma predeterminada, el asistente complemento genera un objeto de complemento estándar. Sin embargo, si elige la opción de extensión Snap-In, el código generado diferirá del código de complemento estándar. Específicamente, la diferencia radica en el objeto de la clase de datos de la extensión snap-in ( CMySnapInData ). Hay dos diferencias principales, ambos ocurridos en el archivo de encabezado de la clase de datos generados.
InitDataClass , en CMySnapInData . El InitDataClass método proporciona un método seguro para inicializar la m_pDataObject miembros de la clase de datos de extensión ( CMySnapInExtData ). La implementación predeterminada almacena un puntero al objeto complemento se extendió, en la m_pDataObject miembros. En la mayoría de los casos, se requiere ninguna otra acción.Sin embargo, si el objeto de datos extendidos complemento necesita convertirse al formato interno (que representan los datos) antes de ser almacenado en caché, este método proporciona un punto de acceso conveniente para realizar la conversión.
CMySnapInExtData ). La macro, se encuentra ante el nuevo mapa, crea un miembro de datos de tipo CMySnapInExtData en el objeto de complemento extendido. Después de esta macro, es declarado el mapa de información de nodo de extensión. La declaración incluye las macros BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP, END_EXTENSION_SNAPIN_NODEINFO_MAPy EXTENSION_SNAPIN_NODEINFO_ENTRY . Cada entrada en el mapa especifica la CMySnapInExtData clase.