c++ - Windows 图形用户界面 : Can I access the "modern ui" from C++?

标签 c++ c user-interface

我正在尝试找到一个简单问题的答案:我可以使用 C/C++ 中的现代 UI(您在 Windows 10 中经常看到它,它也受到深色主题的影响)吗?

我知道 Win32 API 窗口不受深色主题的影响,至少在很大程度上是这样。我还没有找到明确的线索,.NET Windows Forms 是否受到影响,并且 UWP 使用这个名为 CX 的奇怪 C++ 子集?我有点困惑。

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

最佳答案

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

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

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

关于c++ - Windows 图形用户界面 : Can I access the "modern ui" from C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67052617/

相关文章:

vector 上的 C++ operator() 优化

c++ - `long double` 的格式说明符是什么

c - 尝试从文件中获取字符串并访问字符串中的各个字母时程序崩溃

javascript - 可拖动、可调整大小和可移动的 iframe

c++ - boost::tuple 和通用结构的不同模板特化

c++ - vector<double> 被转换为 vector<double, allocator<double>>

c - 2 C 错误 类型与预期类型不兼容

objective-c - NSScrollView 裁剪覆盖的 UI 元素

c# - 具有透明背景且包含不透明控件的 WPF 窗口

Android在编译二进制文件时重建静态库