若要通过 C++ 创作和使用 Windows API,可使用 C++/WinRT。 这是 Microsoft 推荐的用于替代 C++/CX 语言投影和 Windows 运行时 C++ 模板库 (WRL) 。
C++/WinRT 是 Windows 运行时 (WinRT) API 的完全标准新式 C++17 语言投影,以基于标头文件的库的形式实现,旨在为你提供对新式 Windows API 的一流访问。 利用 C++/WinRT,你可以采用任何符合标准的 C++17 编译器创作和使用 Windows 运行时 API。 Windows SDK 包含 C++/WinRT;它已在版本 10.0.17134.0(Windows 10,版本 1803)中引用。
当采用 C++/WinRT 时,你将使用标准 C++ 数据类型、算法和关键字。 投影确实有自己的自定义数据类型,但在大多数情况下,你无需了解它们,因为它们将提供到/自标准类型的相应转换。 这样,你就可以继续使用已用惯的标准 C++ 语言功能和已拥有的源代码。 通过 C++/WinRT,可在任何 C++ 应用程序(从 Win32 到 Windows AppSDK,再到 UWP)中非常轻松地调用 Windows API。
与适用于 Windows 运行时的任何其他语言选择相比,C++/WinRT 的表现更好,生成的二进制文件更小。 它的表现甚至超过了直接使用 ABI 接口手动编写的代码。 这是因为抽象使用了 Visual C++ 编译器能够优化的新式 C++ 习惯用语。 这包括神奇静态变量、空基类、strlen 删除以及最新版本的 Visual C++ 中的很多专门用于改善 C++/WinRT 的性能的更新的优化。