C++ 在WPF、wxWidgets、Win32 API和MFC之间进行选择

C++ 在WPF、wxWidgets、Win32 API和MFC之间进行选择,c++,user-interface,winapi,mfc,C++,User Interface,Winapi,Mfc,假设您在Windows 7上,必须为图形应用程序(如地形编辑器、网格查看器等)编写GUI,这涉及到大量使用DirectX和OpenGL(以本机C++编写)。 如果你的目标是一个多平台软件,那么你应该选择wxWidgets,但想象一下你正在做一个Windows唯一的应用程序……你会选择什么?为什么 我假设该应用程序可以在XP和Vista/7上工作,显然在WPF的情况下,UI将被管理,但它将通过类似C++/CLI代理的类调用本机函数 (来自托管本机和本机托管的“反弹”是否会导致性能问题?。来自托管本

假设您在Windows 7上,必须为图形应用程序(如地形编辑器、网格查看器等)编写GUI,这涉及到大量使用DirectX和OpenGL(以本机C++编写)。 如果你的目标是一个多平台软件,那么你应该选择wxWidgets,但想象一下你正在做一个Windows唯一的应用程序……你会选择什么?为什么

我假设该应用程序可以在XP和Vista/7上工作,显然在WPF的情况下,UI将被管理,但它将通过类似C++/CLI代理的类调用本机函数 (来自托管本机和本机托管的“反弹”是否会导致性能问题?。

来自托管本机和本机托管的“反弹”是否会导致性能问题

当然可以,但既然你只写编辑器(一般来说不是游戏),那就不必担心了


据我所知,由DirectX子系统呈现的WPF应用程序。因此,如果您只使用DirectX,它将是一个不错的选择

在WPF中,您实际上可以使用DirectX着色器在接口对象上应用效果(这是一篇详细介绍开发方面的CodeProject文章),预计对这方面的支持将继续增长,因此我选择WPF作为开发平台。此外,它还致力于在合理的工作量下创建有吸引力的用户界面,我认为这对于构建面向图形的应用程序非常重要。

< P>我将亲自使用C++来创建任何基于Windows的应用程序。否则我只会使用VB.Net或C#,因为您可以轻松地在两者之间移植代码,表单设计器非常有用

MFC :: Just say NO for any kind of project. Win32 :: Well, I can not really recommend using it. wxWidgets :: I have used it and seen no problem, good choice. WPF :: I have not and never will use it as it is .Net bound. FLTK :: Also look at http://fltk.org/, probably has better OpenGL support. 只要对任何类型的项目说不就行了。 Win32::嗯,我真的不推荐使用它。 wxWidgets::我使用过它,没有问题,是个不错的选择。 WPF::我没有也永远不会使用它,因为它是.Net绑定的。 FLTK::还要看http://fltk.org/,可能有更好的OpenGL支持。
我不能对wxWidgets发表评论,但WPF远远优于MFC和旧的Win32 API。WPF使用DirectX进行渲染,其中有一些。不幸的是,这种支持仍然有些初级,而且不是最有效的。如果您托管一个呈现OpenGL的Windows窗体控件,您实际上可以获得更好的3D性能(至少在我最近的一个项目中我们必须这样做)。如果您想在WPF应用程序中进行3D渲染,可以看看XNA框架。下一个版本的.NET框架也将包括对WPF的改进,我相信对3D会有更好的支持。

< P>如果您对C++技能感到满意,我推荐WTL。它非常轻量级,并导致精简的机器代码。Windows版的Google Chrome。

也能胜任这项工作

  • 增强在2010年!VCL(可视) 组件库)用于快速 构建Microsoft Windows 应用程序现在包括无缝 Windows 7支持,并且优雅 与Windows的回退兼容性 Vista、XP和2000
  • 增强在2010年!Windows Vista和 Windows 7 API头将完全关闭 利用最新的Windows 能力
  • 2010年新的!对Windows7的支持 Direct2D API

<>你也可以用W/WWIDGET和

< P>让你考虑使用QT,即使是只针对Windows的应用程序,也仅仅是因为QT+C++ API做得很好。Qt和可与DirectX结合使用。

为了最大限度地缩短开发时间和提高性能,我肯定会使用Delphi 2010(Rad Studio 2010)。您可以获得本机执行、与Windows 7 Direct2D API的直接接口,并且可以说是Windows 7上最好的IDE/开发环境之一。你还想要什么

拉里·德鲁斯 Softwareronin

一定要查看Cockos团队(由Nullsoft/Winamp fame的Justin Frankel领导)的WDL(“whittle”)

这是一个非常轻量级的C++库,包含“WDL虚拟窗口系统”。 我个人还没有用过它,但我可以担保用它制作的一些很棒的软件。极其高效和轻量级的应用程序


链接:

不知道为什么这项投票被否决,这是一个没有被建议的合理答案+1@Dan-这完全是错误的。WPF绝对不是任何新Windows应用程序的最佳选择。@Robot Mess:IMHO,它甚至不是面向对象的。它迫使你以某种方式做事。IIRC,MFC应用程序中有太多的向导代码,这是我讨厌的。VCL是一个更好的图书馆。今天,我只使用可移植的UI工具包…@Malkocoglu:每个gui框架都阻止你“以特定的方式做事”。我同意向导部分,我也更喜欢一个更好的表单编辑器。OP提到C++,所以它也值得指出RAD Studio包含C++ Builder。是的,这个问题似乎是在调用C++ Builder和VCL。OpenGL受到开箱即用的支持,C++Builder的DirectX库可以在www.clootie.ru上找到。QT是否使用Direct2D和DirectWrite?我在WPF使用可视层渲染自定义绘制对象方面有过可怕的经历。延误是如此明显。形状和其他元素也是如此。。所以我想WPF对于普通的GUI来说是非常好的,但是当涉及到呈现高性能的东西时,除了使用互操作进行低级别的操作之外,没有其他方法了。。