Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 454|回复: 0
打印 上一主题 下一主题

WRL

[复制链接]

1228

主题

1997

帖子

7580

积分

认证用户组

Rank: 5Rank: 5

积分
7580
跳转到指定楼层
楼主
发表于 2023-6-4 21:25:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Windows 运行时 C++ 模板库 (WRL)
https://learn.microsoft.com/zh-c ... y-wrl?view=msvc-170

Windows 运行时 C++ 模板库 (WRL) 是一个提供低级别方式来创作和使用 Windows 运行时组件的模板库。
[backcolor=var(--theme-info-background)]
[color=var(--theme-info-dark)] 备注
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。 有关详细信息,请参阅 [color=var(--theme-info-dark)]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 运行时的更自然的方法,因为你不必使用异常。
    [color=var(--theme-text)][backcolor=var(--theme-info-background)]
    [color=var(--theme-info-dark)] 备注
    Windows 运行时 C++ 模板库使用 HRESULT 值且不引发异常。 此外,Windows 运行时 C++ 模板库还使用智能指针和 RAII 模式,以帮助确保在应用程序代码引发异常时正确销毁对象。 有关智能指针和 RAII 的详细信息,请参阅[color=var(--theme-info-dark)]智能指针和[color=var(--theme-info-dark)]对象拥有资源 (RAII)

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



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-4-29 23:47 , Processed in 0.054600 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表