Por padrão, o Snap-In assistente gera um objeto de snap-in padrão. No entanto, se você escolher a opção de extensão de Snap-In, o código gerado será diferente do snap-in de código padrão. Especificamente, a diferença está no objeto de classe de dados da extensão do snap-in ( CMySnapInData ). Existem duas diferenças principais, ambas ocorrendo no arquivo de cabeçalho da classe dados gerados.
InitDataClass , in CMySnapInData . O InitDataClass método fornece um método seguro para inicializar o m_pDataObject Membro da classe de dados extensão ( CMySnapInExtData ). A implementação padrão armazena um ponteiro para o objeto snap-in está sendo estendido, na m_pDataObject Membro. Na maioria dos casos, nenhuma ação adicional é necessária.No entanto, se o objeto de dados extensão snap-in precisa ser convertido para o formato interno (que representam os dados) antes de ser armazenado em cache, esse método fornece um ponto de acesso conveniente para realizar essa conversão.
CMySnapInExtData ). A macro, encontrada antes do novo mapa, cria um membro de dados do tipo CMySnapInExtData no objeto de snap-in de extensão. Após essa macro, o mapa de informações do nó de extensão é declarado. A declaração inclui as macros BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP, END_EXTENSION_SNAPIN_NODEINFO_MAPe EXTENSION_SNAPIN_NODEINFO_ENTRY . Cada entrada no mapa especifica o CMySnapInExtData classe.