MYSNAPIN.H und MYSNAPIN.RGS sind die einzigen Dateien, die die Optionen auf der zweiten Seite betroffen.
Jede Schnittstelle, von der IExtend * Radio Button-Group, die aktiviert ist fügt eine Erklärung dieser spezifische Schnittstelle, die CMySnapInComponent Klasse. Beispielsweise wird die IExtendControlbar -Schnittstelle auswählen die folgende Zeile zur Initialisierung der Klasse member-wise:
öffentlichen IExtendControlbarImpllt;CMySnapInComponent & gt
und die folgende Zeile zur CMySnapInComponent des COM-Zuordnung:
COM_INTERFACE_ENTRY(IExtendControlbar)
Ähnliche Änderungen werden gebildet, um CMySnapInComponent für die Art der gewählten Persistenz.
Zusätzlich zu den oben genannten Änderungen werden alle Methoden der gewählten Persistenz-Schnittstelle in MYSNAPIN deklariert.H. Z. B. der folgende Code wird hinzugefügt, wenn Sie IPersistStorage als die Art der Persistenz auswählen:
STDMETHOD(GetClassID)(CLSID *pClassId)
{
&Nbsp; ATLTRACENOTIMPL(_T("CMySnapInComponent::GetClassID"));
}
//zusätzliche IPersistStorage Methoden
...
virtuelle HRESULT STDMETHODCALLTYPE HandsOffStorage()
{
ATLTRACENOTIMPL(_T("CMySnapInComponent::HandsOffStorage"));
}
Die Änderungen sind für die CMySnapIn Klasse.
Wenn die ISnapInAbout -Schnittstelle ausgewählt ist, wird eine separate Klasse deklariert ( CMySnapInAbout ), und die standard-Methoden deklariert werden.
Wenn das Snap-in eine Snap-in-Erweiterung ist, die.RGS-Datei, die vom Assistenten generierte wird von der Standardeinstellung abweichen. Insbesondere zwei Portionen der NoRemove MMC Abschnitt wird geändert werden, um das erweiterte Objekt-Snap-in das Snap-in-Erweiterung-Objekt zuordnen.
Beispielsweise ist im folgenden Abschnitt Beispiel aus einem Standard-Snap-ins Objekt.RGS-Datei:
&NoRemove MMC
Nbsp; {
NoRemove Snapins
{
ForceRemove {ACC4CCCD-8C61-11D1-B017-00C04FB99436} =
s 'MySnapIn' {}
Val NameString = s 'MySnapIn'
Val About = s '{ACC4CCCE-8C61-11D1-B017-00C04FB99436}'
NodeTypes
{
{ACC4CCCF-8C61-11D1-B017-00C04FB99436}
}
Eigenständige
}
}
NoRemove NodeTypes
{
ForceRemove {ACC4CCCF-8C61-11D1-B017-00C04FB99436}
{
}
}
}
Jedoch für die Snap-in-Erweiterung die NoRemove MMC Abschnitt unterscheidet sich:
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'
}
}
}
}
}