MYSNAPIN.H i MYSNAPIN.RGS są tylko pliki, których dotyczy opcje na drugiej stronie.
Każdy interfejs z IExtend * radiowych przycisk grupy, która jest sprawdzana dodaje deklarację określonego interfejsu do CMySnapInComponent klasy. Na przykład wybranie interfejsu IExtendControlbar dodaje następujący wiersz do member-wise inicjowania klasy:
iExtendControlbarImpllt publiczne;CMySnapInComponent & gt
i następujący wiersz, aby CMySnapInComponent jego COM mapę:
COM_INTERFACE_ENTRY(IExtendControlbar)
Podobne zmiany są do CMySnapInComponent dla typu trwałość wybranych.
Oprócz wyżej wymienionych zmian wszystkie metody interfejsu trwałość wybranych są zgłaszane w MYSNAPIN.H. na przykład, poniższy kod jest dodawany po wybraniu IPersistStorage jako typ trwałości:
STDMETHOD(GetClassID)(CLSID *pClassID)
{
nbsp; ATLTRACE&NOTIMPL(_T("CMySnapInComponent::GetClassID"));
}
metody IPersistStorage //additional
...
wirtualny HRESULT STDMETHODCALLTYPE HandsOffStorage()
{
ATLTRACENOTIMPL(_T("CMySnapInComponent::HandsOffStorage"));
}
Zmiany są podobne do CMySnapIn klasy.
Jeśli wybrany interfejs ISnapInAbout jest zgłaszana w osobnej klasy ( CMySnapInAbout ), i standardowe metody są deklarowane.
Jeśli przystawka jest rozszerzeniem przystawki.RGS plik wygenerowany przez kreatora będzie różnią się nieco od domyślnego. W szczególności, dwie porcje w NoRemove MMC sekcji zostanie zmodyfikowane, aby skojarzyć obiektu przystawki rozszerzeń z rozszerzonego obiektu przystawki.
Na przykład poniższy przykład sekcji jest domyślnie przystawka obiektu na.Plik RGS:
&NoRemove MMC
nbsp; {
Przystawki usługi NoRemove
{
ForceRemove {ACC4CCCD-8C61-11D1-B017-00C04FB99436} =
s 'MySnapIn' {}
Val NameString = s 'MySnapIn'
Val około = s "{ACC4CCCE-8C61-11D1-B017-00C04FB99436}"
NodeTypes
{
{ACC4CCCF-8C61-11D1-B017-00C04FB99436}
}
Autonomiczny
}
}
NoRemove NodeTypes
{
ForceRemove {ACC4CCCF-8C61-11D1-B017-00C04FB99436}
{
}
}
}
Jednakże w przypadku rozszerzenia przystawki NoRemove MMC sekcji różni się:
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'
}
}
}
}
}