2011-08-05 44 views
17

所以我最近刚刚和WPF搞混了,我必须说我非常喜欢这个主意。我喜欢整个框架,从GUI到管道。用于WPF的C++模拟

然而,尽管我喜欢托管的土地,但我也很喜欢我的本地代码。所以我想知道什么样的库存在C++,它捕获了WPF的各个部分的本质。我不是在寻找interop解决方案,也不需要托管C++或C++/CLI解决方案,而是纯粹的C++解决方案。

现在,我不希望为C++找到WPF的“副本” - 我不希望存在,也不需要它。相反,我希望不同的库可能会捕获所需概念的一个子集。我特别的兴趣是

为插件
  1. 硬件加速图形基于GUI的(通过DirectX或OpenGL中,优选后者)

  2. 声明性语言GUI设计(优选的XML方言)

  3. 数据绑定

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

要说一点我的推理,我想自己实现这样一个库,它捕获了我已经开始研究的一个特定模型。在锁定我的设计之前,我正在寻找更多的灵感和有用的资源。图书馆的目标是跨平台的,因此提及跨平台的想法会很好,但不是绝对必要的,因为我通常能够将事物转化为跨平台的解决方案。

最后,尽管我正在编写一个C++库,并且C++的想法会很棒,但我可以接受来自任何本地语言的想法。

在此先感谢您的帮助。

回答

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及其相关数据的脚本语言的多功能性和反映性。

+3

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