Windows Runtime C++ Template Library (WRL)
Die Windows Runtime C++ Template Library (WRL) ist eine Vorlagenbibliothek, die eine Low-Level-Methode für die Erstellung und Verwendung von Windows-Runtime-Komponenten bereitstellt.
Vorteile
Die WRL erleichtert Ihnen die Implementierung und Nutzung von COM-Komponenten (Component Object Model). Sie stellt Verwaltungstechniken wie die Verweiszählung bereit, mit der die Lebensdauer der Objekte verwaltet wird, oder wie Tests von HRESULT-Werten, mit denen festgestellt wird, ob ein Vorgang erfolgreich war oder einen Fehler verursacht hat. Zur erfolgreichen Verwendung der WRL müssen die folgenden Regeln und Techniken sorgfältig beachtet werden.
Die Komponentenerweiterungen für Visual C++ (C++/CX) ist eine sprachbasierte High-Level Methode zur Verwendung von Windows-Runtime-Komponenten. Sowohl WRL als auch C++/CX vereinfachen die Verfassung von Code für die Windows-Runtime, da Verwaltungsaufgaben automatisch für Sie ausgeführt werden.
Die WRL und die C++/CX bieten unterschiedliche Vorteile. Nachfolgend sind einige Gründe aufgeführt, warum Sie die WRL anstelle der C++/CX verwenden würden:
Die WRL fügt nur wenig Abstraktion über die Windows-Runtime-ABI (Application Binary Interface) hinzu; so können Sie den zugrunde liegenden Code besser steuern und Windows-Runtime-APIs besser erstellen oder nutzen.
Die C++/CX stellt COM- HRESULT-Werte als Ausnahmen dar. Wenn Sie eine CodeBase geerbt haben, die COM verwendet, oder eine CodeBase, die keine Ausnahmen verwendet, ist die WRL möglicherweise besser zur Arbeit mit der Windows-Runtime geeignet, da keine Ausnahmen verwendet werden müssen.
Hinweis
Die WRL verwendet HRESULT-Werte und löst keine Ausnahmen aus.Außerdem verwendet die WRL intelligente Zeiger und das RAII-Muster, um dafür zu sorgen, dass Objekte ordnungsgemäß zerstört werden, wenn der Anwendungscode eine Ausnahme auslöst.Weitere Informationen zu intelligenten Zeigern und RAII finden Sie unter Intelligente Zeiger (Modern C++) und Objekteigene Ressourcen (RAII).
Zweck und Entwurf der WRL wurden durch die ATL (Active Template Library) angeregt, eine Gruppe vorlagenbasierter Visual C++-Klassen, die zur Vereinfachung der Programmierung von COM-Objekten dienen. Da die WRL die Windows-Runtime mithilfe von Standard-C++ umschließt, wird die Portierung und die Interaktion mit vielen vorhandenen in ATL geschriebenen COM-Komponenten in die Windows-Runtime erleichtert. Wenn Sie ATL bereits kennen, fällt Ihnen die Programmierung in der WRL möglicherweise leichter.
Erste Schritte
Im Folgenden sind einige Ressourcen aufgeführt, die Ihnen beim schnellen Einstieg in die WRL helfen.
Video zur Windows Runtime-Bibliothek (WRL)
In diesem Channel 9-Video erfahren Sie, wie Sie mit der WRL leichter Windows Store-Apps schreiben und Windows-Runtime-Komponenten erstellen und verwenden können.Gewusst wie: Aktivieren und Verwenden einer Windows-Runtime-Komponente mit WRL
Zeigt, wie Sie mit der WRL die Windows-Runtime initialisieren und eine Windows-Runtime-Komponente aktivieren und verwenden.Gewusst wie: Abschließen asynchroner Vorgänge mit WRL
Zeigt, wie Sie mit WRL asynchrone Vorgänge starten und Arbeiten ausführen, wenn die Vorgänge abgeschlossen sind.Gewusst wie: Behandeln von Ereignissen mit WRL
Zeigt, wie Sie mit der WRL die Ereignisse eines Windows-Runtime-Objekts abonnieren und behandeln.Exemplarische Vorgehensweise: Erstellen einer Basiskomponente für Windows-Runtime mit WRL
Zeigt, wie Sie mit der WRL eine grundlegende Windows-Runtime-Komponente erstellen, die zwei Zahlen addiert. Veranschaulicht außerdem, wie Sie Ereignisse auslösen und die Komponente aus einer Windows Store-App verwenden, die mit JavaScript arbeitet.Exemplarische Vorgehensweise: Erstellen einer Windows Store-App mithilfe von WRL und Media Foundation
Erfahren Sie, wie Sie eine Windows Store-Anwendung erstellen, die Microsoft Foundation Media verwendet.Gewusst wie: Erstellen einer klassischen COM-Komponente mit WRL
Zeigt, wie Sie mit der WRL eine einfache COM-Komponente und eine einfache Methode zur Registrierung und Nutzung der COM-Komponente aus einer Desktop-App erstellen.Gewusst wie: Direktes Instanziieren von WRL-Komponenten
Erfahren Sie, wie Sie mit den Funktionen Microsoft::WRL::Make und Microsoft::WRL::Details::MakeAndInitialize eine Komponente aus dem Modul instanziieren, das sie definiert.Gewusst wie: Verwenden von winmdidl.exe und midlrt.exe zum Erstellen von .h-Dateien aus Windows-Metadaten
Zeigt, wie benutzerdefinierte Komponenten für Windows-Runtime von WRL durch Erstellen einer IDL-Datei von den WINMD-Metadaten verarbeitet werden.Exemplarische Vorgehensweise: Verbinden von Verwendungsaufgaben und XML-HTTP-Anforderungen
Zeigt, wie die IXMLHTTPRequest2- und IXMLHTTPRequest2Callback-Schnittstellen zusammen mit Aufgaben für HTTP-GET- und POST-Anforderungen an einen Webdienst in einer Windows Store-App verwendet werden.Beispiel zu Bing Maps Trip Optimizer
Verwendet die HttpRequest-Klasse, die in Exemplarische Vorgehensweise: Verbinden von Verwendungsaufgaben und XML-HTTP-Anforderungen definiert wird, im Rahmen einer vollständigen Windows Store-App.Beispiel zum Erstellen einer Windows Runtime DLL-Komponente mit C++
Zeigt, wie Sie mit der WRL eine prozessinterne DLL-Komponente erstellen und sie von C++/CX, JavaScript und C# aus nutzen.DirectX-Beispiel eines Murmellabyrinthspiels
Veranschaulicht, wie Sie mit der WRL die Lebensdauer von COM-Komponenten wie DirectX und Media Foundation im Rahmen eines vollständigen 3D-Spiels verwalten.Beispiel zum Senden von Toastbenachrichtigungen aus Desktop-Apps
Veranschaulicht, wie Sie mithilfe der WRL mit Toastbenachrichtigungen aus einer Desktop-App arbeiten.
Die WRL im Vergleich mit ATL
Die WRL ähnelt der Active Template Library (ATL), da Sie mit ihr kleine, schnelle COM-Objekte erstellen können. WRL und ATL haben noch andere Konzepte gemeinsam, wie die Definition von Objekten in Modulen, die explizite Registrierung von Schnittstellen und die offene Erstellung von Objekten durch Factorys. Wenn Sie mit ATL vertraut sind, wird Ihnen auch die WRL bekannt vorkommen.
Die WRL unterstützt die COM-Funktionalität, die für Apps für Windows Store erforderlich ist. Daher unterscheidet sie sich von ATL, da die direkte Unterstützung für COM-Funktionen wie Folgende fehlt:
Aggregation
vordefinierte Implementierungen
duale Schnittstellen (IDispatch)
Standardenumeratorschnittstellen
Verbindungspunkte
abtrennbare Schnittstellen
OLE-Einbettung
ActiveX-Steuerelemente
COM+
Konzepte
Die WRL stellt Typen bereit, die einige grundlegende Konzepte darstellen. Im folgenden Abschnitt werden diese Typen beschrieben.
ComPtr
ComPtr ist ein Typ des intelligenten Zeigermechanismus, der die Schnittstelle darstellt, die vom Vorlagenparameter angegeben wird. Mit ComPtr deklarieren Sie eine Variable, die auf die Member eines Objekts zugreifen kann, das von der Schnittstelle abgeleitet wird. ComPtr verwaltet automatisch einen Verweiszähler für den zugrunde liegenden Schnittstellenzeiger und gibt die Schnittstelle frei, wenn der Verweiszähler auf null geht.
RuntimeClass
RuntimeClass stellt eine instanziierte Klasse dar, die einen Satz angegebener Schnittstellen erbt. Ein RuntimeClass-Objekt kann kombinierte Unterstützung für eine oder mehrere Windows-Runtime-COM-Schnittstellen oder einen schwachen Verweis auf eine Komponente bereitstellen.
Modul
Module stellt eine Auflistung von zugehörigen Objekten dar. Ein Module-Objekt verwaltet Klassenfactorys, die Objekte erstellen, und die Registrierung, die anderen Anwendungen die Verwendung eines Objekts ermöglicht.
Rückruf
Die Rückruf-Funktion erstellt ein Objekt, dessen Memberfunktion ein Ereignishandler ist (eine Rückrufmethode). Mit der Callback-Funktion schreiben Sie asynchrone Operationen.
EventSource
Mit EventSource verwalten Sie Delegat-Ereignishandler. Mit der WRL implementieren Sie einen Delegaten, und mit EventSource fügen Sie Delegaten hinzu, entfernen sie und rufen sie auf.
AsyncBase
AsyncBase stellt virtuelle Methoden bereit, die das asynchrone Programmiermodell in der Windows-Runtime darstellen. Überschreiben Sie die Member in dieser Klasse, um eine benutzerdefinierte Klasse zu erstellen, die einen asynchronen Vorgang starten, beenden oder seinen Fortschritt überprüfen kann.
FtmBase
FtmBase stellt ein Freethread-Marshaller-Objekt dar. FtmBase erstellt eine globale Schnittstellentabelle (GIT) und hilft bei der Verwaltung von Marshalling- und Proxyobjekten.
WeakRef
WeakRef ist ein Typ des intelligenten Zeigermechanismus, der einen schwachen Verweis auf ein Objekt darstellt, das möglicherweise zugänglich ist. Ein WeakRef-Objekt kann nur von der Windows-Runtime und nicht von klassischem COM verwendet werden.
Ein WeakRef-Objekt stellt in der Regel ein Objekt dar, dessen Vorhandensein von einem externen Thread oder einer externen Anwendung gesteuert wird. Beispielsweise kann ein WeakRef-Objekt auf ein Dateiobjekt verweisen. Wenn die Datei geöffnet ist, so ist WeakRef gültig, und die referenzierte Datei ist zugänglich. Wenn die Datei hingegen geschlossen ist, so ist WeakRef ungültig, und die Datei ist nicht zugänglich.
Verwandte Themen
Beschreibt, wie auf die WRL-Klassenbibliotheksprojektvorlage zugegriffen wird. Mit dieser Vorlage wird die Erstellung von Windows-Runtime-Komponenten mit Visual Studio vereinfacht. |
|
Hebt die primären WRL-Typen, -Funktionen und -Makros hervor. |
|
Enthält Referenzinformationen für die WRL. |
|
Beschreibt kurz die C++/CX-Funktionen, die die Windows-Runtime unterstützen. |
|
Thema zur Verwendung von Windows-Runtime-Komponenten in Visual C++ |
Zeigt, wie Sie mit der C++/CX eine einfache Windows-Runtime-Komponente erstellen. |