【问题标题】:Choosing between WPF, wxWidgets, Win32 API and MFC在 WPF、wxWidgets、Win32 API 和 MFC 之间进行选择
【发布时间】:2010-12-09 17:24:33
【问题描述】:

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

我假设该应用程序可以在 XP 和 Vista/7 上运行,显然在 WPF 情况下,UI 将被管理,但它会通过类 C++/CLI 代理类调用本机函数 (从托管本机和本机托管“弹跳”会导致性能问题吗?)。

【问题讨论】:

    标签: c++ user-interface winapi mfc


    【解决方案1】:

    RAD Studio也能干活

    • 2010 年增强! VCL(视觉 组件库)用于快速 构建微软视窗 应用程序现在包括无缝 支持Windows 7,优雅 与 Windows 的回退兼容性 Vista、XP 和 2000
    • 2010 年增强! Windows Vista 和 Windows 7 API 标头完全 利用最新的 Windows 能力
    • 2010 年新品!支持 Windows 7 Direct2D API

    您也可以使用Delphi Prism 制作WPF,使用twinforms 制作wxWidgets

    【讨论】:

    • OP提到了C++,所以还值得指出的是RAD Studio包含了C++ Builder。
    • 是的,这个问题似乎需要 C++Builder 和 VCL。开箱即用支持 OpenGL,C++Builder 的 DirectX 库可以在 www.clootie.ru 找到。
    【解决方案2】:

    如果您对自己的 C++ 技能感到满意,我推荐 WTL。它非常轻量级,可以生成精益机器代码。 Windows 版 Google Chrome was written with WTL

    【讨论】:

    • 不知道为什么这被否决了,这是一个没有被建议的合法答案。 +1
    【解决方案3】:

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

    拉里·德鲁斯 软件浪人

    【讨论】:

      【解决方案4】:

      您可能会考虑使用 Qt,即使是仅适用于 Windows 的应用程序,仅仅是因为 Qt C++ API 做得非常好。 Qtsupports OpenGL,可以和DirectX结合使用。

      【讨论】:

      • QT 使用 Direct2D 和 DirectWrite 吗?
      【解决方案5】:

      在 WPF 中,您实际上可以使用 DirectX Shaders 对界面对象应用效果,(here 的一篇 CodeProject 文章详细介绍了开发方面)并且预计对此的支持将继续增长,所以我会选择 WPF作为开发平台。此外,它专注于通过合理的努力创建有吸引力的用户界面,我认为这对于构建面向图形的应用程序非常重要。

      【讨论】:

      • 我在 WPF 使用可视层渲染自定义绘制对象方面有过可怕的经历。延迟是如此明显。 Shapes 和其他 UIElements 也是如此。所以我猜 WPF 对于普通的 GUI 东西来说真的很棒,但是在渲染高性能的东西时,除了使用互操作去低级之外别无他法。
      【解决方案6】:

      从托管本机和本机托管“弹跳”会导致性能问题吗?

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

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

      【讨论】:

        【解决方案7】:

        我个人会使用http://sourceforge.net/projects/win32-framework/ 在 C++ 中创建任何基于 Windows 的应用程序。否则我只会使用 VB.Net 或 C#,因为您可以轻松地在两者之间移植代码,并且表单设计器非常有用。

        【讨论】:

          【解决方案8】:
          MFC :: 对任何类型的项目都说不。 Win32 :: 好吧,我真的不推荐使用它。 wxWidgets:: 我用过,没问题,不错的选择。 WPF :: 我没有也永远不会使用它,因为它是.Net 绑定的。 FLTK :: 也可以看看 http://fltk.org/,可能有更好的 OpenGL 支持。

          【讨论】:

          • @Dan - 这完全是错误的。 WPF 绝对不是任何新的 Windows 应用程序的最佳选择。
          • @Robot Mess:恕我直言,它甚至不是面向对象的。它迫使你以某种方式做事。 IIRC,MFC 应用程序中有太多向导代码,我讨厌。 VCL 是一个更好的库。今天,我只使用便携式 UI 工具包...
          • @Malkocoglu:每个 gui 框架都会强迫你“以某种方式做事”。我同意向导部分,我也更喜欢更好的表单编辑器。
          【解决方案9】:

          请务必查看 Cockos 团队(由 Nullsoft/Winamp 的 Justin Frankel 领导)的 WDL(“whittle”)。

          这是一个极其轻量级的 C++ 库,包含“WDL 虚拟窗口系统”。

          我个人没有使用过它,但我可以保证用它制作的一些很棒的软件。极其高效和轻量级的应用程序。

          链接:WDL

          【讨论】:

            【解决方案10】:

            我无法对 wxWidgets 发表评论,但 WPF 远优于 MFC 和良好的旧 Win32 API。 WPF 使用 DirectX 进行渲染,并且有一些 3D support in WPF。不幸的是,这种支持仍然有些初级,并不是最有效的。如果您托管一个呈现 OpenGL 的 Windows 窗体控件,您实际上可以获得更好的 3D 性能(至少我们在我最近从事的一个项目中必须这样做)。如果您想在 WPF 应用程序中进行 3D 渲染,您可以查看 XNA 框架。 .NET 框架的下一个版本还将包括对 WPF 的改进,我相信对 3D 的支持会更好。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-07-02
              • 1970-01-01
              • 2012-01-16
              • 1970-01-01
              • 2011-01-29
              • 2010-12-06
              相关资源
              最近更新 更多