Knihovna šablon C++ prostředí Windows Runtime (WRL)Windows Runtime C++ Template Library (WRL)

Knihovna šablon C++ prostředí Windows Runtime (WRL) je knihovna šablon, která poskytuje způsob vytváření a používání prostředí Windows runtimech komponent na nízké úrovni.The Windows Runtime C++ Template Library (WRL) is a template library that provides a low-level way to author and use Windows Runtime components.

Poznámka

WRL je teď nahrazený C++/WinRT, což je standardní projekce jazyka c++ 17 pro prostředí Windows Runtime API.WRL is now superseded by C++/WinRT, a standard C++17 language projection for Windows Runtime APIs. C++/WinRT je k dispozici v sadě Windows 10 SDK od verze 1803 další.C++/WinRT is available in the Windows 10 SDK from version 1803 onward. C++/WinRT je implementována zcela v hlavičkových souborech a je navržena tak, aby vám poskytovala prvotřídní přístup k modernímu rozhraní Windows API.C++/WinRT is implemented entirely in header files, and designed to provide you with first-class access to the modern Windows API.

Pomocí C++/WinRT můžete využívat i vytvářet prostředí Windows Runtime rozhraní API pomocí všech kompilátorů c++ 17 odpovídajících standardům.With C++/WinRT, you can both consume and author Windows Runtime APIs using any standards-compliant C++17 compiler. C++/WinRT obvykle provádí lepší a vytváří menší binární soubory než jakákoli jiná možnost jazyka pro prostředí Windows Runtime.C++/WinRT typically performs better and produces smaller binaries than any other language option for the Windows Runtime. Budeme dál podporovat C++/CX a WRL, ale důrazně doporučujeme, aby nové aplikace používaly C++/WinRT.We will continue to support C++/CX and WRL, but highly recommend that new applications use C++/WinRT. Další informace najdete v tématu C++/WinRT.For more information, see C++/WinRT.

VýhodyBenefits

Knihovna šablon C++ prostředí Windows Runtime umožňuje snadněji implementovat a využívat komponenty modelu COM (Component Object Model).The Windows Runtime C++ Template Library enables you to more easily implement and consume Component Object Model (COM) components. Poskytuje údržbu techniky, jako je počítání odkazů, pro správu životnosti objektů a testování hodnot HRESULT k určení, zda operace byla úspěšná nebo neúspěšná.It provides housekeeping techniques like reference-counting to manage the lifetime of objects and testing HRESULT values to determine whether an operation succeeded or failed. Chcete-li úspěšně použít C++ knihovnu šablon prostředí Windows Runtime, je nutné pečlivě postupovat podle těchto pravidel a technik.To successfully use the Windows Runtime C++ Template Library, you must carefully follow these rules and techniques.

C++/CX je vysoce základní způsob použití prostředí Windows runtimech komponent na úrovni jazyka.The C++/CX is a high-level, language-based way to use Windows Runtime components. Knihovna šablon prostředí Windows Runtime C++ i C++/CX zjednodušují psaní kódu pro prostředí Windows Runtime automatickým prováděním údržbu úloh vaším jménem.Both the Windows Runtime C++ Template Library and C++/CX simplify the writing of code for the Windows Runtime by automatically performing housekeeping tasks on your behalf.

Knihovna šablon C++ prostředí Windows Runtime a C++/CX poskytují různé výhody.The Windows Runtime C++ Template Library and C++/CX provide different benefits. Zde jsou některé důvody, proč možná budete chtít použít knihovnu C++ šablon prostředí Windows Runtime místo C++/CX:Here are some reasons you might want to use the Windows Runtime C++ Template Library instead of C++/CX:

  • Knihovna C++ šablon prostředí Windows Runtime přidává do binárního rozhraní aplikace prostředí Windows Runtime (ABI) malou abstrakci, která vám dává možnost řídit podkladový kód pro lepší vytváření nebo zpracování rozhraní API prostředí Windows Runtime.Windows Runtime C++ Template Library adds little abstraction over the Windows Runtime Application Binary Interface (ABI), giving you the ability to control the underlying code to better create or consume Windows Runtime APIs.

  • C++/CX představuje hodnoty modelu COM HRESULT jako výjimky.C++/CX represents COM HRESULT values as exceptions. Pokud jste zdědili základ kódu, který používá model COM, nebo který nepoužívá výjimky, můžete zjistit, že knihovna šablon C++ prostředí Windows Runtime je přirozenější způsob, jak pracovat s prostředí Windows Runtime, protože nemusíte používat výjimky.If you’ve inherited a code base that uses COM, or one that doesn’t use exceptions, you might find that the Windows Runtime C++ Template Library is a more natural way to work with the Windows Runtime because you don't have to use exceptions.

    Poznámka

    Knihovna šablon C++ prostředí Windows Runtime používá hodnoty HRESULT a nevyvolává výjimky.The Windows Runtime C++ Template Library uses HRESULT values and does not throw exceptions. Kromě toho knihovna šablon prostředí Windows Runtime C++ používá inteligentní ukazatele a vzor RAII k zajištění správného zničení objektů, když kód aplikace vyvolá výjimku.In addition, the Windows Runtime C++ Template Library uses smart pointers and the RAII pattern to help guarantee that objects are destroyed correctly when your application code throws an exception. Další informace o inteligentních ukazatelích a RAII najdete v tématu věnovaném inteligentním ukazatelům a objektům pro vlastní prostředky (RAII).For more info about smart pointers and RAII, see Smart Pointers and Objects Own Resources (RAII).

  • Účel a návrh knihovny šablon prostředí Windows Runtime C++ nechte inspirovat knihovny ATL (Active Template Library), což je sada tříd založených na C++ šablonách, které zjednodušují programování objektů com.The purpose and design of the Windows Runtime C++ Template Library is inspired by the Active Template Library (ATL), which is a set of template-based C++ classes that simplify the programming of COM objects. Vzhledem k C++ tomu, že knihovna C++ šablon prostředí Windows Runtime používá k zabalení prostředí Windows Runtime Standard, lze snadněji portovat a pracovat s mnoha EXISTUJÍCÍmi komponentami com napsanými v ATL do prostředí Windows Runtime.Because Windows Runtime C++ Template Library uses standard C++ to wrap the Windows Runtime, you can more easily port and interact with many existing COM components written in ATL to the Windows Runtime. Pokud již znáte knihovnu ATL, můžete zjistit, že prostředí Windows Runtime C++ programování knihovny šablon je snazší.If you already know ATL, you might find that Windows Runtime C++ Template Library programming is easier.

ZačínámeGetting Started

Tady je několik prostředků, které vám pomůžou pracovat s knihovnou C++ šablon prostředí Windows Runtime hned.Here are some resources that can help you get working with the Windows Runtime C++ Template Library right away.

Knihovna prostředí Windows Runtime (WRL)The Windows Runtime Library (WRL)
V tomto videu kanálu 9 se dozvíte víc o tom C++ , jak knihovna šablon prostředí Windows Runtime pomáhá psát aplikace Univerzální platforma Windows (UWP) a jak vytvářet a využívat prostředí Windows Runtime komponenty.In this Channel 9 video, learn more about how the Windows Runtime C++ Template Library helps you write Universal Windows Platform (UWP) apps and how to author and consume Windows Runtime components.

Postupy: aktivace a používání součásti prostředí Windows RuntimeHow to: Activate and Use a Windows Runtime Component
Ukazuje, jak použít knihovnu šablon C++ prostředí Windows Runtime k inicializaci prostředí Windows Runtime a aktivaci a použití komponenty prostředí Windows Runtime.Shows how to use the Windows Runtime C++ Template Library to initialize the Windows Runtime and activate and use a Windows Runtime component.

Postupy: dokončení asynchronních operacíHow to: Complete Asynchronous Operations
Ukazuje, jak použít knihovnu šablon C++ prostředí Windows Runtime ke spuštění asynchronních operací a provedení práce po dokončení operací.Shows how to use the Windows Runtime C++ Template Library to start asynchronous operations and perform work when the operations complete.

Postupy: zpracování událostíHow to: Handle Events
Ukazuje, jak použít knihovnu šablon C++ prostředí Windows Runtime k přihlášení k odběru a zpracování událostí objektu prostředí Windows Runtime.Shows how to use the Windows Runtime C++ Template Library to subscribe to and handle the events of a Windows Runtime object.

Návod: Vytvoření aplikace pro UPW s použitím knihovny WRL a platformy Media FoundationWalkthrough: Creating a UWP app using WRL and Media Foundation
Naučte se, jak vytvořit aplikaci pro UWP, která používá Microsoft Media Foundation.Learn how to create a UWP app that uses Microsoft Media Foundation.

Postupy: vytvoření klasické komponenty modelu COMHow to: Create a Classic COM Component
Ukazuje, jak použít knihovnu šablon C++ prostředí Windows Runtime k vytvoření základní komponenty modelu COM a základní způsob, jak registrovat a spotřebovávat komponentu modelu COM z desktopové aplikace.Shows how to use the Windows Runtime C++ Template Library to create a basic COM component and a basic way to register and consume the COM component from a desktop app.

Postupy: Přímé vytváření instancí komponent knihovny WRLHow to: Instantiate WRL Components Directly
Naučte se používat funkce Microsoft:: WRL:: Make a Microsoft:: WRL::D Etails:: MakeAndInitialize pro vytvoření instance komponenty z modulu, který ji definuje.Learn how to use the Microsoft::WRL::Make and Microsoft::WRL::Details::MakeAndInitialize functions to instantiate a component from the module that defines it.

Postupy: Vytváření souborů .h z metadat Windows pomocí nástrojů winmdidl.exe a midlrt.exeHow to: Use winmdidl.exe and midlrt.exe to create .h files from windows metadata
Ukazuje, jak zpracovat vlastní součásti prostředí Windows Runtime z WRL vytvořením souboru IDL z metadat. winmd.Shows how to consume custom Windows Runtime components from WRL by creating an IDL file from the .winmd metadata.

Návod: Připojení pomocí úloh a žádostí XML HTTPWalkthrough: Connecting Using Tasks and XML HTTP Requests
Ukazuje, jak používat rozhraní IXMLHTTPRequest2 a IXMLHTTPRequest2Callback společně s úkoly k odesílání požadavků HTTP GET a post webové službě v aplikaci UWP.Shows how to use the IXMLHTTPRequest2 and IXMLHTTPRequest2Callback interfaces together with tasks to send HTTP GET and POST requests to a web service in a UWP app.

Ukázka optimalizace cest Bing MapsBing Maps Trip Optimizer sample
Používá třídu HttpRequest, která je definována v návodu: připojení pomocí úloh a požadavků XML http v kontextu úplné aplikace UWP.Uses the HttpRequest class that's defined in Walkthrough: Connecting Using Tasks and XML HTTP Requests in the context of a complete UWP app.

Vytvoření komponenty prostředí Windows Runtime DLL s C++ ukázkouCreating a Windows Runtime DLL component with C++ sample
Ukazuje, jak pomocí knihovny šablon C++ prostředí Windows Runtime vytvořit vnitroprocesové komponentu knihovny DLL a spotřebovat ji z C++/CX, JavaScriptu a. C#Shows how to use the Windows Runtime C++ Template Library to create an in-process DLL component and consume it from C++/CX, JavaScript, and C#.

Ukázka hry rozhraní DirectX mramor bludištěDirectX marble maze game sample
Ukazuje, jak použít knihovnu šablon C++ prostředí Windows Runtime ke správě životnosti komponent modelu COM, jako je rozhraní DirectX a Media Foundation v kontextu kompletní 3D hry.Demonstrates how to use the Windows Runtime C++ Template Library to manage the lifetime of COM components such as DirectX and Media Foundation in the context of a complete 3-D game.

Ukázka odesílání oznámení informačních zpráv z desktopových aplikacíSending toast notifications from desktop apps sample
Ukazuje, jak používat knihovnu šablon C++ prostředí Windows Runtime pro práci s informačními oznámeními z desktopové aplikace.Demonstrates how to use the Windows Runtime C++ Template Library to work with toast notifications from a desktop app.

Knihovna C++ šablon prostředí Windows Runtime v porovnání s knihovnou ATLWindows Runtime C++ Template Library Compared to ATL

Knihovna C++ šablon prostředí Windows Runtime připomíná knihovnu ATL (Active Template Library), protože ji můžete použít k vytvoření malých a rychlých objektů com.Windows Runtime C++ Template Library resembles the Active Template Library (ATL) because you can use it to create small, fast COM objects. Prostředí Windows Runtime C++ knihovny šablon a ATL také sdílí koncepty, jako je definice objektů v modulech, explicitní registrace rozhraní a otevírání objektů pomocí továrn.Windows Runtime C++ Template Library and ATL also share concepts such as definition of objects in modules, explicit registration of interfaces, and open creation of objects by using factories. Pokud jste obeznámeni s knihovnou ATL, můžete být spokojeni s prostředí Windows Runtime C++ knihovny šablon.You might be comfortable with Windows Runtime C++ Template Library if you're familiar with ATL.

Knihovna C++ šablon prostředí Windows Runtime podporuje funkce modelu COM, které jsou požadovány pro aplikace pro UWP.Windows Runtime C++ Template Library supports the COM functionality that is required for UWP apps. Proto se liší od knihovny ATL, protože vynechává přímou podporu funkcí modelu COM, jako například:Therefore, it differs from the ATL because it omits direct support for COM features such as:

  • Agregaceaggregation

  • skladové implementacestock implementations

  • duální rozhraní (IDispatch)dual interfaces (IDispatch)

  • rozhraní Standard Enumeratorstandard enumerator interfaces

  • body připojeníconnection points

  • odtrhnout rozhranítear-off interfaces

  • Vložení OLEOLE embedding

  • ActiveX – ovládací prvkyActiveX controls

  • Model COM+COM+

KonceptyConcepts

Knihovna C++ šablon prostředí Windows Runtime poskytuje typy, které představují několik základních konceptů.Windows Runtime C++ Template Library provides types that represent a few basic concepts. Tyto typy jsou popsány v následujících částech.The following sections describe those types.

ComPtrComPtr

ComPtr je typ inteligentního ukazatele , který představuje rozhraní určené parametrem šablony.ComPtr is a smart pointer type that represents the interface that's specified by the template parameter. Použijte ComPtr k deklaraci proměnné, která má přístup k členům objektu, který je odvozen z rozhraní.Use ComPtr to declare a variable that can access the members of an object that's derived from the interface. ComPtr automaticky udržuje počet odkazů pro základní ukazatel rozhraní a uvolní rozhraní, když počet odkazů překročí nulu.ComPtr automatically maintains a reference count for the underlying interface pointer and releases the interface when the reference count goes to zero.

RuntimeClassRuntimeClass

RuntimeClass představuje instanci třídy, která dědí sadu zadaných rozhraní.RuntimeClass represents an instantiated class that inherits a set of specified interfaces. Objekt RuntimeClass může poskytnout kombinaci podpory pro jedno nebo více prostředí Windows Runtimech rozhraní COM nebo slabý odkaz na komponentu.A RuntimeClass object can provide a combination of support for one or more Windows Runtime COM interfaces, or a weak reference to a component.

– modulModule

Modul představuje kolekci souvisejících objektů.Module represents a collection of related objects. Objekt Module spravuje objekty pro vytváření tříd, které vytvářejí objekty a registrují, což umožňuje jiným aplikacím použít objekt.A Module object manages class factories, which create objects, and registration, which enables other applications to use an object.

OnCuePointCallback

Funkce zpětného volání vytvoří objekt, jehož členská funkce je obslužná rutina události (metoda zpětného volání).The Callback function creates an object whose member function is an event handler (a callback method). Použijte funkci Callback k zápisu asynchronních operací.Use the Callback function to write asynchronous operations.

EventSourceEventSource

EventSource se používá ke správě obslužných rutin událostí delegátů .EventSource is used to manage delegate event handlers. Pomocí prostředí Windows Runtime C++ knihovny šablon implementujte delegáta a pomocí EventSource můžete přidat, odebrat a vyvolat delegáty.Use Windows Runtime C++ Template Library to implement a delegate, and use EventSource to add, remove, and invoke delegates.

AsyncBaseAsyncBase

AsyncBase poskytuje virtuální metody, které představují prostředí Windows Runtime asynchronní programovací model.AsyncBase provides virtual methods that represent the Windows Runtime asynchronous programming model. Přepište členy v této třídě a vytvořte tak vlastní třídu, která může spustit, zastavit nebo kontrolovat průběh asynchronní operace.Override the members in this class to create a custom class that can start, stop, or check the progress of an asynchronous operation.

FtmBaseFtmBase

FtmBase představuje objekt zařazovací modul s volnými vlákny.FtmBase represents a free-threaded marshaler object. FtmBase vytvoří globální tabulku rozhraní (GIT) a pomůže spravovat zařazovací a proxy objekty.FtmBase creates a global interface table (GIT), and helps manage marshaling and proxy objects.

WeakRefWeakRef

WeakRef je typ inteligentního ukazatele, který představuje slabý odkaz, který odkazuje na objekt, který může nebo nemusí být přístupný.WeakRef is a smart-pointer type that represents a weak reference, which references an object that might or might not be accessible. Objekt WeakRef lze použít pouze v prostředí Windows Runtime, nikoli v klasickém modelu COM.A WeakRef object can be used by only the Windows Runtime, and not by classic COM.

Objekt WeakRef obvykle představuje objekt, jehož existence je řízena externím vláknem nebo aplikací.A WeakRef object typically represents an object whose existence is controlled by an external thread or application. Objekt WeakRef například může odkazovat na objekt souboru.For example, a WeakRef object can reference a file object. Když je soubor otevřený, WeakRef je platný a odkazovaný soubor je přístupný.When the file is open, the WeakRef is valid and the referenced file is accessible. Ale když je soubor uzavřený, WeakRef je neplatný a soubor není dostupný.But when the file is closed, the WeakRef is invalid and the file is not accessible.

Klíčová rozhraní API podle kategorieKey APIs by Category Zvýrazní typy, funkce C++ a makra primární knihovny šablon prostředí Windows Runtime.Highlights the primary Windows Runtime C++ Template Library types, functions, and macros.
OdkazyReference Obsahuje referenční informace pro knihovnu šablon C++ prostředí Windows Runtime.Contains reference information for the Windows Runtime C++ Template Library.
Stručná referenční dokumentace (C++/CX)Quick Reference (C++/CX) Stručně popisuje C++funkce/CX, které podporují prostředí Windows Runtime.Briefly describes the C++/CX features that support the Windows Runtime.
Používání komponent prostředí Windows Runtime v jazyce VisualC++Using Windows Runtime Components in Visual C++ Ukazuje, jak použít C++/CX k vytvoření základní komponenty prostředí Windows Runtime.Shows how to use C++/CX to create a basic Windows Runtime component.