用于WPF的C++模拟

Ken*_*nde 18 c++ wpf cross-platform

所以我最近有点愚弄WPF,我必须说我真的很喜欢这个主意.从GUI到管道,我喜欢整个框架.

然而,尽管我喜欢管理的土地,但我也喜欢我的原生代码.所以我想知道C++存在哪种类型的库,它们捕获了WPF各个部分的本质.我不是在寻找互操作解决方案,也不是我想要Managed C++或C++/CLI解决方案,而是纯粹的C++解决方案.

现在,我不期望为C++找到WPF的"副本" - 我不希望它存在,我也不需要它.相反,我希望不同的库可以捕获所需概念的子集.我特别感兴趣的是

  1. 基于小部件的GUI的硬件加速图形(通过DirectX或OpenGL,最好是后者)

  2. GUI设计的声明性语言(最好是XML方言)

  3. 数据绑定

  4. 分辨率独立性(不太重要)

为了说一下我的推理,我想自己实现这样一个库,它捕获了我已经开始研究的特定模型.在锁定我的设计之前,我正在寻找更多灵感和有用的资源.该库旨在跨平台,因此对跨平台创意的参考将是伟大的,但并非严格必要,因为我通常能够将事物转换为跨平台解决方案.

最后,虽然我正在编写一个C++库,但C++的想法很棒,但我对任何母语的想法持开放态度.

在此先感谢您的帮助.

Nic*_*las 10

  1. 没有这样的事情.无论如何都不是跨平台的.Direct2D工作得相当好,但显然只有Windows.NVIDIA最近放弃了OpenGL的这种"路径"扩展,它在基本功能上类似,但它仅限NVIDIA(并且在Mac OSX上不可用).开罗有一个OpenGL后端,但我不知道它有多好.如果Mozilla在Windows上倾向于开源而不是D2D,那就不是那么好了.
  2. 许多GUI工具包都有某种形式的语言来制作GUI.Qt有一个预编译成C++的版本.
  3. 从来没听说过.数据绑定需要某种形式的反射(WPF样式的数据绑定确实),而C++没有本机支持反射.因此,在开始使WPF样式的数据绑定工作之前,您需要实现某种反射.
  4. 它带有#1.或多或少,因为任何基于GPU的渲染器都能够以任意分辨率运行.

我喜欢C++,但老实说,这种事情最适合更高级别的语言.缺乏基于语言的反射支持将使实现数据绑定成为一个巨大的痛苦.然而,您可以在C++中实现低级"渲染东西到区域"和基本窗口/事件管理,然后将其暴露给数据绑定和此类工作的脚本语言.这样,您可以在需要的地方获得本机代码速度,但是脚本语言的多功能性和反映可以处理GUI及其相关数据.

  • 感谢您的解释,我感谢在某些设置中何时/何地使用C++的提示.虽然我发现这些建议很有价值,但我感兴趣的主要领域之一是找到用C++做事的方法,这些方法通常归功于高级语言.也许它会证明是奇怪的,困难的或不可能的,但我仍然会尝试实现我的想法.哦,就#4而言,你是对的,但只要渲染表面的大小正确.是否有任何跨平台工具来访问DPI设置以计算窗口大小? (3认同)