Freigeben über


VSPackages mit der Visual Studio-Bibliothek implementieren

Die IVsPackageImpl-Klasse in der Visual Studio-Bibliothek stellt eine minimale Implementierung der IVsPackage-Schnittstelle. IVsPackageImpl selbst werden die meisten Methoden zum Verwalten von IVsPackage. Andere Möglichkeiten, die Sie benötigen, um zu überschreiben, um ein sinnvolles folgende Implementierung bereitzustellen:

Pakete, die implementiert werden, indem Sie in der Regel die Visual Studio-Bibliothek verwendet, erben eine VSPackage-Klasse von CComObjectRootEx-Klasse ATL und CComCoClass-Klasse IVsPackageImpl und der Visual Studio-Bibliothek. Beispielsweise ist das Reference.Package-Beispiel vom VSPackage-Klassendeklaration die Folgenden:

class ATL_NO_VTABLE BasicPackage : 
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<BasicPackage, &CLSID_BasicPackage>,
    public IVsPackageImpl<BasicPackage, &CLSID_BasicPackage>,
    ...

Die IVsPackageImpl Vorlagenparameter, die angezeigt werden, sind die VSPackage-Klasse selbst und ein Zeiger auf eine GUID, die ein VSPackage identifiziert.

Unterstützung COM-Zuordnungen mit QueryInterface

Um Unterstützung für ATL QueryInterfaceabzurufen, muss die COM-Zuordnung die Schnittstellen auf die von der Klasse implementiert wird. Beispielsweise ist das Folgen die COM-Zuordnung für die VSPackage-Klasse im Reference.Package-Beispiel:

BEGIN_COM_MAP(BasicPackage)
    COM_INTERFACE_ENTRY(IVsPackage)
    ...
END_COM_MAP()

Weitere Informationen über COM-Zuordnungen, finden Sie unter Implementieren von CComObjectRootEx und COM_INTERFACE_ENTRY-Makros.

Registrierung mit Registrierungs-Karten unterstützen

Visual Studio-Bibliothek ATL-Format verwendet, um Dateien .RGS Registrierung von COM-Objekten zu unterstützen. Um die Token in der .RGS-Datei zu unterstützen, verwendet Visual Studio-Bibliothek Registrierungsdaten ist. Registrierung ist führen die zu ersetzende auf Symbole, und unterstützen die Verwendung von IDs für Zeichenfolgentabellen Ressourcen frei.

Beispielsweise ist das Folgen die Registrierung für die VSPackage-Klasse im Reference.Package-Beispiel zugeordnet:

VSL_BEGIN_REGISTRY_MAP(IDR_BASICPACKAGE_RGS)
    VSL_REGISTRY_MAP_GUID_ENTRY(CLSID_BasicPackage)
    VSL_REGISTRY_RESOURCE_STRING_ENTRY(IDS_BASICPACKAGE_REGISTRY_NAME)
    ...
VSL_END_REGISTRY_MAP()

Siehe auch

Konzepte

Visual Studio-Erweiterbarkeits-Beispiele