首页 > 解决方案 > Windows GUI:我可以从 C++ 访问“现代 ui”吗?

问题描述

我试图找到一个简单问题的答案:我可以使用现代 UI——你在 Windows 10 中看到很多,它也受到黑暗主题的影响——来自 C/C++?

我知道 Win32 API 窗口不受深色主题的影响,至少在大多数情况下是这样。如果 .NET Windows Forms 受到影响并且 UWP 使用这个称为 CX 的奇怪 C++ 子集,我也没有找到明确的线索?我有点困惑。

基本上,我只想选择正确的 API 来使用 Windows 10 中常用的现代 UI 元素来设计我的 GUI。原因之一是这些控件已经可以正确访问 - 这是其他 GUI 框架实际上可能缺乏的。(我自己有视力障碍,因此使用 NVDA 进行了粗略的测试,因为我的大多数朋友都依赖这些工具。)

标签: c++cuser-interface

解决方案


Windows 中的“现代” UI 框架(从未命名)最初仅适用于面向通用 Windows 平台 (UWP) 的应用程序。后来它通过XAML 岛的方式提供给经典桌面应用程序。后来还是决定将 UI 框架与操作系统分离,以便更改可以独立于操作系统更新而发布。这就是成为WinUI 2的原因。WinUI 3 计划完全解耦,使 UI 立即可用于经典桌面应用程序。

整个 API 图面公开为 Windows 运行时类型。虽然您可以在 ABI 级别与这些类型进行交互(这是WRL所做的),但使用语言投影更方便。最初,它是 C++/CX,一种由微软编译器实现的非标准语言扩展,后来被C++/WinRT取代,这是一种在标准 C++ 中实现的语言投影。

所以是的,可以在 C++ 的经典桌面应用程序中使用新的 UI 框架。尽管必须指出,在 IDE 集成方面,尤其是在 XAML 创作和绑定方面,C++/WinRT 仍然无法与 C++/CX 相提并论。仍然可能,但有时会更乏味。


推荐阅读