MYSNAPIN.H e MYSNAPIN.RGS são os únicos arquivos afetados pelas opções na segunda página.
Cada interface, desde o IExtend * grupo de botões de rádio, que é verificado adiciona uma declaração de interface específica para o CMySnapInComponent classe. Por exemplo, escolhendo a interface IExtendControlbar adiciona a seguinte linha para a inicialização da classe member-wise:
iExtendControlbarImpllt pública;CMySnapInComponent & gt
e a seguinte linha para CMySnapInComponent do COM mapa:
COM_INTERFACE_ENTRY(IExtendControlbar)
Modificações semelhantes são feitas para CMySnapInComponent para o tipo de persistência escolhido.
Além das modificações acima, todos os métodos para a interface de persistência escolhidos são declarados no MYSNAPIN.H. por exemplo, o código a seguir é adicionado se você escolher IPersistStorage como o tipo de persistência:
STDMETHOD(GetClassID)(CLSID *pClassID)
{
nbsp; ATLTRACE&NOTIMPL(_T("CMySnapInComponent::GetClassID"));
}
//Additional Métodos de IPersistStorage
...
virtual HRESULT STDMETHODCALLTYPE HandsOffStorage()
{
ATLTRACENOTIMPL(_T("CMySnapInComponent::HandsOffStorage"));
}
As modificações são semelhantes para o CMySnapIn classe.
Se a interface de ISnapInAbout é escolhida, é declarada como uma classe separada ( CMySnapInAbout ), e o padrão métodos são declarados.
Se o snap-in é uma extensão do snap-in, o.Arquivo RGS gerado pelo assistente diferem ligeiramente o padrão. Especificamente, duas partes no NoRemove MMC seção será modificada para associar o objeto de snap-in de extensão com o snap-in do objeto extenso.
Por exemplo, o exemplo de seção a seguir é de um snap-in do objeto padrão.Arquivo RGS:
&NoRemove MMC
nbsp; {
NoRemove Snapins
{
ForceRemove {ACC4CCCD-8C61-11D1-B017-00C04FB99436} =
s «MySnapIn» {
Val NameString = s 'MySnapIn'
Val prestes = s '{ACC4CCCE-8C61-11D1-B017-00C04FB99436}'
NodeTypes
{
{ACC4CCCF-8C61-11D1-B017-00C04FB99436}
}
Autônomo
}
}
NoRemove NodeTypes
{
ForceRemove {ACC4CCCF-8C61-11D1-B017-00C04FB99436}
{
}
}
}
No entanto, para a extensão de snap-in, o NoRemove MMC difere de seção:
NoRemove MMC
{
NoRemove Snapins
{
ForceRemove {ACC4CCD5-8C61-11D1-B017-00C04FB99436} =
s 'MySnapInDataExt1'
{
val NameString = s 'MySnapInDataExt1'
val About = s '{ACC4CCD6-8C61-11D1-B017-00C04FB99436}'
}
}
NoRemove NodeTypes
{
NoRemove {}
{
NoRemove Extensions
{
NoRemove PropertySheet
{
val {ACC4CCD5-8C61-11D1-B017-00C04FB99436} =
s 'MySnapInDataExt1'
}
NoRemove ToolBar
{
val {ACC4CCD5-8C61-11D1-B017-00C04FB99436} =
s 'MySnapInDataExt1'
}
}
}
}
}