Windows 运行时 C++ 模板库 (WRL)

Windows 运行时 C++ 模板库 (WRL) 是一种低级别方式创作并使用 Windows 运行时 元素的模板库。

优点

WRL 更轻松地使您能够实现和使用组件对象模型 (COM) 元素。它提供管理技术,如引用计数管理生存期对象和测试 HRESULT 值确定操作是否成功还是失败。若要成功使用 WRL,您必须仔细遵循这些规则和技术。

Visual C++ 组件扩展 (C++/CX) 都是高级,以语言为基础的方式使用 Windows 运行时 元素。WRL 和 C++/CX 通过自动执行委托您的管理任务简化代码编写 Windows 运行时 的。

WRL 和 C++/CX 提供不同的优点。这是您可能希望使用 WRL 而不是 C++/CX的一些原因:

  • WRL 添加到 Windows 运行时 应用程序二进制接口 (abi) (ABI) 的 ACE 抽象,使您能够控制基础代码更好地创建或使用 Windows 运行时 API。

  • C++/CX 表示 COM HRESULT 值作为异常。如果继承了使用 COM 或一个不使用一个异常的基本代码,您可能会发现 WRL 是一种更自然的方式与 Windows 运行时 一起使用,因为您不必使用异常。

    说明说明

    WRL 使用 HRESULT 值,且不会引发异常。此外,帮助的 WRL 使用智能指针和 RAII 模式可确保正确销毁对象,当应用程序代码引发异常。有关智能指针和 RAII 的更多信息,请参见 智能指针(现代C++)对象特定资源(RAII)

  • WRL 的用途以及模型由活动模板库 (ATL) 创作而来,即一组基于模板的 C++ 选件类简化编程 COM 对象。由于 WRL 使用标准 C++ 包装 Windows 运行时,可以更轻松地将端口和与 ATL 编写的许多现有 COM 组件交互。Windows 运行时。如果您已经知道 ATL,您可能会发现 WRL 编程更加容易。

入门

这是可帮助您获取同时使用 WRL 使用的一些资源。

WRL 与 ATL 进行比较。

因为您可以使用它来小,快速 COM 对象,WRL 类似于活动模板库 (ATL)。使用工厂,WRL 和 ATL 间共享概念 (如对象,接口的显式注册的定义在模块中,并打开对象的创建。如果您熟悉 ATL,您可能熟悉 WRL。

WRL 支持对于 Windows 应用商店 apps 所需的 COM 函数。因此,因为它省略为 COM 函数直接支持例如,它与 ATL 不同:

  • 聚合

  • 股票实现

  • 双重接口 (IDispatch)

  • 标准枚举器接口

  • 连接点

  • 撕掉接口

  • OLE 嵌入

  • ActiveX 控件

  • COM+

概念

WRL 提供表示一些基本概念的类型。以下各节介绍这些类型。

Hh438466.collapse_all(zh-cn,VS.110).gifComPtr

ComPtr 是表示接口由模板参数指定的智能 指针 类型。使用 ComPtr 声明可以访问对象的成员从接口派生的变量。当引用计数为零时,ComPtr 自动维护基接口指针的引用计数并释放接口。

Hh438466.collapse_all(zh-cn,VS.110).gifRuntimeClass

RuntimeClass 表示继承设置指定接口实例化选件类。RuntimeClass 对象可以提供组合为一个或多 Windows 运行时 COM 接口支持,或者弱引用到组件。

Hh438466.collapse_all(zh-cn,VS.110).gif模块

模块 表示相关对象的集合。Module 对象管理选件类工厂,创建对象并注册,使其他应用程序使用对象。

Hh438466.collapse_all(zh-cn,VS.110).gif回调

回调 函数创建成员函数是事件处理程序的对象 (回调方法)。使用 Callback 功能编写异步操作。

Hh438466.collapse_all(zh-cn,VS.110).gifEventSource

EventSource 用于管理 委托 事件处理程序。使用 WRL 实现委托,并使用 EventSource,添加、移除和调用该委托。

Hh438466.collapse_all(zh-cn,VS.110).gifAsyncBase

AsyncBase 提供表示 Windows 运行时 异步编程模型的虚方法。重写此选件类的成员创建可开始,停止或检查异步操作的进度的自定义选件类。

Hh438466.collapse_all(zh-cn,VS.110).gifFtmBase

FtmBase 表示一个自由线程封送拆收器对象。FtmBase 创建一个全局接口表 (GIT),并且,以帮助管理线和代理对象。

Hh438466.collapse_all(zh-cn,VS.110).gifWeakRef

WeakRef 是表示 弱引用,对象也可能无法访问的智能指针类型。WeakRef 对象可供仅 Windows 运行时和不按传统的 COM。

WeakRef 对象通常表示由外部线程或应用程序控制的对象。例如,WeakRef 对象可以引用文件对象。当文件打开时,WeakRef 有效,并且引用的文件可访问的。但文件时,在关闭时,WeakRef 无效,并且文件不可访问。

相关主题

WRL 类库项目模板

描述如何访问 WRL 选件类库项目模板。此模板可帮助简化使用 Visual Studio 任务创建 Windows 运行时 元素。

按类别列出的关键 WRL API

显示主 WRL 类型、函数和宏。

WRL 引用

参考 WRL的信息。

快速参考 (windows 运行时和 Visual C++)

简要描述支持 Windows 运行时的 C++/CX 功能。

使用 Visual C++ 的窗口运行时组件

演示如何使用 C++/CX 创建一个基本的 Windows 运行时 元素。