C++-Vorlagenbibliothek für Windows-Runtime (WRL)

Die C++-Vorlagenbibliothek für Windows-Runtime(WRL) ist eine Vorlagenbibliothek, die eine niederschwelligen Zugang zur Erstellung und Verwendung von Windows-Runtime-Komponenten bietet.

Hinweis

WRL wird jetzt von C++/WinRT ersetzt, einer C++17-Standardsprachenprojektion für Windows-Runtime-APIs. C++/WinRT ist in Windows SDK ab Version 1803 (10.0.17134.0) erhältlich. C++/WinRT wird vollständig in Headerdateien implementiert und soll Ihnen erstklassigen Zugriff auf die moderne Windows-API bieten.

Mit C++/WinRT können Sie sowohl Windows-Runtime APIs verwenden als auch erstellen, indem Sie einen beliebigen standardkonformen C++17-Compiler verwenden. C++/WinRT führt in der Regel bessere Leistung aus und erzeugt kleinere Binärdateien als jede andere Sprachoption für die Windows-Runtime. Wir unterstützen C++/CX und WRL weiterhin, empfehlen jedoch dringend die Verwendung von C++/WinRT für neue Anwendungen. Weitere Informationen finden Sie unter C++/WinRT.

Vorteile

Mit der Windows-Runtime C++-Vorlagenbibliothek können Sie Komponenten des Component Object Model (COM) einfacher implementieren und nutzen. Es stellt Housekeeping-Techniken wie Referenzzählungen bereit, um die Lebensdauer von Objekten zu verwalten und HRESULT-Werte zu testen, um zu bestimmen, ob ein Vorgang erfolgreich war oder fehlgeschlagen ist. Um die Windows-Runtime C++-Vorlagenbibliothek erfolgreich zu verwenden, müssen Sie diese Regeln und Techniken sorgfältig befolgen.

C++/CX ist eine allgemeine, sprachbasierte Methode, um Windows-Runtime Komponenten zu verwenden. Sowohl die Windows-Runtime C++-Vorlagenbibliothek als auch C++/CX vereinfachen das Schreiben von Code für die Windows-Runtime, indem Sie Hausaufgaben in Ihrem Auftrag automatisch ausführen.

Die Windows-Runtime C++-Vorlagenbibliothek und C++/CX bieten unterschiedliche Vorteile. Hier sind einige Gründe, warum Sie die Windows-Runtime C++-Vorlagenbibliothek anstelle von C++/CX verwenden möchten:

  • Windows-Runtime C++-Vorlagenbibliothek fügt der Windows-Runtime Application Binary Interface (ABI) wenig Abstraktion hinzu, sodass Sie den zugrunde liegenden Code steuern können, um Windows-Runtime APIs besser zu erstellen oder zu nutzen.

  • C++/CX stellt COM-HRESULT-Werte als Ausnahmen dar. Wenn Sie eine Codebasis geerbt haben, die COM verwendet, oder eine, die keine Ausnahmen verwendet, stellen Sie möglicherweise fest, dass die Windows-Runtime C++-Vorlagenbibliothek eine natürlichere Möglichkeit ist, mit dem Windows-Runtime zu arbeiten, da Sie keine Ausnahmen verwenden müssen.

    Hinweis

    Die Windows-Runtime C++-Vorlagenbibliothek verwendet HRESULT-Werte und löst keine Ausnahmen aus. Darüber hinaus verwendet die Windows-Runtime C++-Vorlagenbibliothek intelligente Zeiger und das RAII-Muster, um sicherzustellen, dass Objekte ordnungsgemäß zerstört werden, wenn ihr Anwendungscode eine Ausnahme auslöst. Weitere Informationen zu intelligenten Zeigern und RAII finden Sie unter Smart Pointers and Objects Own Resources (RAII).

  • Der Zweck und Entwurf der Windows-Runtime C++-Vorlagenbibliothek ist von der Active Template Library (ATL) inspiriert, die eine Reihe vorlagenbasierter C++-Klassen ist, die die Programmierung von COM-Objekten vereinfachen. Da Windows-Runtime C++-Vorlagenbibliothek standardmäßig C++ verwendet, um die Windows-Runtime umzuschließen, können Sie die Windows-Runtime einfacher portieren und mit vielen vorhandenen COM-Komponenten interagieren, die in ATL geschrieben wurden. Wenn Sie ATL bereits kennen, stellen Sie möglicherweise fest, dass die Programmierung der C++-Vorlagenbibliothek Windows-Runtime einfacher ist.

Erste Schritte

Im Folgenden finden Sie einige Ressourcen, mit denen Sie sofort mit der Windows-Runtime C++-Vorlagenbibliothek arbeiten können.

Vorgehensweise: Aktivieren und Verwenden einer Windows-Runtime Komponente
Zeigt, wie Sie die Windows-Runtime C++-Vorlagenbibliothek verwenden, um die Windows-Runtime zu initialisieren und eine Windows-Runtime Komponente zu aktivieren und zu verwenden.

Vorgehensweise: Abschließen asynchroner Vorgänge
Zeigt, wie Sie die Windows-Runtime C++-Vorlagenbibliothek verwenden, um asynchrone Vorgänge zu starten und nach Abschluss der Vorgänge Arbeit auszuführen.

Vorgehensweise: Behandeln von Ereignissen
Zeigt, wie Sie die Windows-Runtime C++-Vorlagenbibliothek verwenden, um die Ereignisse eines Windows-Runtime-Objekts zu abonnieren und zu behandeln.

Exemplarische Vorgehensweise: Erstellen einer UWP-App mithilfe von WRL und Media Foundation
Erfahren Sie, wie Sie eine UWP-App erstellen, die Microsoft Media Foundation verwendet.

Gewusst wie: Erstellen einer klassischen COM-Komponente
Zeigt, wie Sie die Windows-Runtime C++-Vorlagenbibliothek verwenden, um eine einfache COM-Komponente und eine grundlegende Möglichkeit zum Registrieren und Nutzen der COM-Komponente aus einer Desktop-App zu erstellen.

Vorgehensweise: 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.

Vorgehensweise: 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 Sie die IXMLHTTPRequest2 - und IXMLHTTPRequest2Callback-Schnittstellen zusammen mit Aufgaben verwenden, um HTTP GET- und POST-Anforderungen an einen Webdienst in einer UWP-App zu senden.

Bing Karten Trip Optimizer-Beispiel
Verwendet die Klasse, die HttpRequest in exemplarischer Vorgehensweise definiert ist: Verbinden Verwenden von Aufgaben- und XML-HTTP-Anforderungen im Kontext einer vollständigen UWP-App.

Erstellen einer Windows-Runtime DLL-Komponente mit C++-Beispiel
Zeigt, wie Sie die Windows-Runtime C++-Vorlagenbibliothek verwenden, um eine prozessinterne DLL-Komponente zu erstellen und aus C++/CX, JavaScript und C# zu nutzen.

Beispiel für DirectX-Marble Maze-Spiele
Veranschaulicht die Verwendung der Windows-Runtime C++-Vorlagenbibliothek zum Verwalten der Lebensdauer von COM-Komponenten wie DirectX und Media Foundation im Kontext eines vollständigen 3D-Spiels.

Popupbenachrichtigungen von Desktop-Apps
Veranschaulicht, wie Popupbenachrichtigungen von einer Desktop-App gesendet werden.

Windows-Runtime C++-Vorlagenbibliothek im Vergleich zu ATL

Windows-Runtime C++-Vorlagenbibliothek ähnelt der aktiven Vorlagenbibliothek (ACTIVE Template Library, ATL), da Sie sie zum Erstellen kleiner, schneller COM-Objekte verwenden können. Windows-Runtime C++-Vorlagenbibliothek und ATL teilen sich auch Konzepte wie die Definition von Objekten in Modulen, die explizite Registrierung von Schnittstellen und die offene Erstellung von Objekten mithilfe von Fabriken. Möglicherweise sind Sie mit Windows-Runtime C++-Vorlagenbibliothek vertraut, wenn Sie mit ATL vertraut sind.

Windows-Runtime C++-Vorlagenbibliothek unterstützt die COM-Funktionalität, die für UWP-Apps 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

Windows-Runtime C++-Vorlagenbibliothek 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 eine Kombination aus 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

MitEventSource verwalten Sie Delegat -Ereignishandler. Verwenden Sie Windows-Runtime C++-Vorlagenbibliothek, um einen Delegat zu implementieren und EventSource Stellvertretungen hinzuzufügen, zu entfernen und aufzurufen.

AsyncBase

AsyncBase stellt virtuelle Methoden bereit, die das Windows-Runtime asynchronen Programmiermodells 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 Verweisauf ein Objekt darstellt, das möglicherweise zugänglich ist. Ein WeakRef Objekt kann nur vom Windows-Runtime und nicht von der klassischen 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.

Wichtige APIs nach Kategorie
Hebt die primären Windows-Runtime C++-Vorlagenbibliothekstypen, -funktionen und -Makros hervor.

Referenz
Enthält Referenzinformationen für die Windows-Runtime C++-Vorlagenbibliothek.

Kurzreferenz (C++-CX)
Beschreibt kurz die C++/CX-Features, die die Windows-Runtime unterstützen.

Verwenden von Windows-Runtime-Komponenten in Visual C++
Zeigt, wie Sie mit C++/CX eine einfache Windows-Runtime Komponente erstellen.