MYSNAPIN.H e MYSNAPIN.RGS sono gli unici file colpiti dalle opzioni nella seconda pagina.
Ogni interfaccia del IExtend * gruppo pulsante radio, che viene controllato aggiunge una dichiarazione di tale interfaccia specifica per il CMySnapInComponent classe. Per esempio, scegliendo l'interfaccia IExtendControlbar aggiunge la seguente riga per l'inizializzazione della classe assegniata:
iExtendControlbarImpllt pubblica;CMySnapInComponent & gt
e la riga seguente per CMySnapInComponent di mappa COM:
COM_INTERFACE_ENTRY(IExtendControlbar)
Vengono apportate modifiche simili a CMySnapInComponent per il tipo di persistenza scelto.
Le modifiche di cui sopra, oltre a tutti i metodi dell'interfaccia persistenza scelti sono dichiarati in MYSNAPIN.H. per esempio, č aggiunto il seguente codice se scegliete IPersistStorage come il tipo di persistenza:
STDMETHOD(GetClassID)(CLSID *pClassId)
{
nbsp; ATLTRACE&NOTIMPL(_T("CMySnapInComponent::GetClassID"));
}
Metodi IPersistStorage //additional
...
Virtual HRESULT STDMETHODCALLTYPE HandsOffStorage()
{
ATLTRACENOTIMPL(_T("CMySnapInComponent::HandsOffStorage"));
}
Le modifiche sono simili per il CMySnapIn classe.
Se si sceglie l'interfaccia ISnapInAbout , viene dichiarata una classe separata ( CMySnapInAbout ), e i metodi standard sono dichiarati.
Se lo snap-in č un'estensione dello snap-in, il.File RGS generato dalla procedura guidata sarā leggermente diverso dall'impostazione predefinita. In particolare, due porzioni nella NoRemove MMC sezione sarā modificato per associare l'oggetto snap-in di estensione con l'oggetto esteso lo snap-in.
Ad esempio, nell'esempio seguente sezione č da predefinito dello snap-in di un oggetto.File RGS:
&NoRemove MMC
nbsp; {
NoRemove Snapins
{
ForceRemove {ACC4CCCD-8C61-11D1-B017-00C04FB99436} =
'MySnapIn' s {
Val NameString = 'MySnapIn' s
Val su = '{ACC4CCCE-8C61-11D1-B017-00C04FB99436}' s
NodeTypes
{
{ACC4CCCF-8C61-11D1-B017-00C04FB99436}
}
Stand-alone
}
}
NoRemove NodeTypes
{
ForceRemove {ACC4CCCF-8C61-11D1-B017-00C04FB99436}
{
}
}
}
Tuttavia, per l'estensione dello snap-in, il NoRemove MMC sezione differisce:
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'
}
}
}
}
}