Qter 发表于 2023-6-4 21:25:01

WRL

Windows 运行时 C++ 模板库 (WRL)
https://learn.microsoft.com/zh-cn/cpp/cppcx/wrl/windows-runtime-cpp-template-library-wrl?view=msvc-170

Windows 运行时 C++ 模板库 (WRL) 是一个提供低级别方式来创作和使用 Windows 运行时组件的模板库。 备注WRL 现在已由 C++/WinRT 取代。C++/WinRT 是 Windows 运行时 API 的标准 C++17 语言投影。 从版本 1803 (10.0.17134.0) 起,C++/WinRT 在 Windows SDK 中提供。 C++/WinRT 完全在头文件中实现,旨在提供对新式 Windows API 的优先访问权限。通过 C++/WinRT,可以使用任何符合标准的 C++17 编译器来同时使用和创作 Windows 运行时 API。 与适用于 Windows 运行时的任何其他语言选择相比,通常 C++/WinRT 的表现更好,生成的二进制文件更小。 我们将继续支持 C++/CX 和 WRL,但强烈建议新应用程序使用 C++/WinRT。 有关详细信息,请参阅 C++/WinRT。
好处
Windows 运行时 C++ 模板库使你能够更轻松地实现和使用组件对象模型 (COM) 组件。 它提供引用计数这类管理技术来管理对象的生存期,并可通过测试 HRESULT 值来确定操作是否成功。 若要成功使用 Windows 运行时 C++ 模板库,必须认真遵循这些规则和方法。C++/CX 是一种使用 Windows 运行时组件的基于语言的高级方式。 Windows 运行时 C++ 模板库和 C++/CX 都通过代表你自动执行管护任务来简化 Windows 运行时代码的编写。Windows 运行时 C++ 模板库和 C++/CX 提供不同的优势。 下面是你可能想要使用 Windows 运行时 C++ 模板库而不是 C++/CX 的部分原因:
[*]Windows 运行时 C++ 模板库在 Windows 运行时应用程序二进制接口 (ABI) 上添加了少量的抽象,使你能够控制基础代码以更好地创建或使用 Windows 运行时 API。
[*]C++/CX 将 COM HRESULT 值表示为异常。 如果继承了使用 COM 的代码库或不使用异常的代码库,你可能会发现,Windows 运行时 C++ 模板库是处理Windows 运行时的更自然的方法,因为你不必使用异常。 备注Windows 运行时 C++ 模板库使用 HRESULT 值且不引发异常。 此外,Windows 运行时 C++ 模板库还使用智能指针和 RAII 模式,以帮助确保在应用程序代码引发异常时正确销毁对象。 有关智能指针和 RAII 的详细信息,请参阅智能指针和对象拥有资源 (RAII)。

[*]Windows 运行时 C++ 模板库的用途和设计是由活动模板库 (ATL) 创作而来。活动模板库是一组基于模板的 C++ 类,可以简化编程 COM 对象。 由于 Windows 运行时 C++ 模板库使用标准 C++ 来包装 Windows 运行时,因此你可以更轻松地将许多以 ATL 编写的现有 COM 组件移植到 Windows 运行时并与之交互。 如果你已了解 ATL,可能会发现 Windows 运行时 C++ 模板库编程更容易。


页: [1]
查看完整版本: WRL