【问题标题】:Advice for C++ GUI programmingC++ GUI 编程的建议
【发布时间】:2009-05-17 22:53:22
【问题描述】:

我已经编写 C++ 控制台/CMD 行应用程序大约一年了,并且想进入 Windows GUI 应用程序。对于那些曾经走这条路的人,你能给我什么建议/提示。例如:好的阅读材料、教程、接近策略等......

我知道这是一个非常广泛的问题,但我真的不知道如何/从哪里开始,因此不知道如何正确地提出这个问题。

【问题讨论】:

    标签: c++ visual-c++


    【解决方案1】:

    出于以下几个原因,我强烈推荐使用Qt Libraries

    1. 该框架免费可用于 Windows、Linux、MacOS X 和几个移动系统。从 4.5 版开始,许可证是 LGPL,这基本上意味着您甚至可以在商业应用程序中使用 Qt。
    2. Qt 的设计非常出色,例如他们使用现代设计模式和非常一致的界面设计(我不知道有很多其他库如此完美地使用了面向对象的思想)。使用 Qt 与使用 Boost 相同:它会提高你自己的编程技能,因为它们使用了如此漂亮的概念!
    3. 它们非常快,例如在渲染中(由于 OpenGL、DirectX 等的后端不同)。只要看看this video,您就会发现使用 Qt 可以轻松完成,但使用原生 Windows、Mac 或 Linux 编程却很难实现。
    4. 他们有一个非常很棒的文档,有大量的教程和一个很好的参考。您可以使用给定的文档轻松开始学习 Qt!文档也是available online,大家自己去看看吧。
    5. 如前所述,Qt 是跨平台;您拥有一个适用于所有重要操作系统的源代码库。当您还可以“免费”拥有 Mac 和 Linux 时,为什么还要限制自己使用 Windows?
    6. Qt 比“只是”用户界面更多;它们还提供网络和数据库功能、OpenGL 绑定、功能齐全的网络浏览器控件(基于 WebKit)、多媒体播放库等等。

    老实说,我为 Windows 开发软件原生浪费了几年时间,而我本来可以提高工作效率。

    【讨论】:

    【解决方案2】:

    对于 C++,您有两种选择,Native 或 Managed。

    对于本机开发,我的团队(在 Microsoft,在 Windows 中)使用 Windows Template Library。它对我们非常有效。

    您应该了解 Win32 的基础知识以及 Windowing 的工作原理。经典著作是Programming Windows®

    对于托管开发,您可以将 C++ 与 Windows Forms 结合使用。但是,windows 窗体已被Windows Presentation Foundation (WPF) 取代。

    【讨论】:

      【解决方案3】:

      我对 Windows C++ GUI 编程的最佳建议是不要进行 Windows C++ GUI 编程。

      我意识到,如果它不合格,这是一个非常无信息/智能的响应,所以我会注意你没有声明你需要进行 C++ Windows GUI 编程,但是你“想进入 Windows GUI 应用程序。”如果是这种情况,并且您没有使用 C++ 的非常具体的理由(即,用 MFC 编写的庞大的现有遗留代码库或您想要为其构建前端但会很痛苦的一堆 C++ 代码暴露于 .NET 代码),那么走 .NET 路线并开始学习 Windows 窗体或使用 C# 或您选择的其他 .NET 语言的更好的 WPF 将会变得更加容易和高效。

      如果您确实需要使用 C++,那么我会推荐第三方工具包,如 Qt 或 wxWidgets,因为 Microsoft 的 C/C++ GUI 编程工具的状态现在很糟糕。

      【讨论】:

        【解决方案4】:

        大多数窗口库和技术都使用类似的习惯用法。选一个来学吧。

        Windows Template Library 在坚持使用 C++ 的同时,是 Microsoft Windows 的一个非常好的饰面。

        对于跨平台 C++ 窗口工具包(它们可以在 Microsoft Windows 以及其他平台上运行),您可以尝试QTwxWidgets

        【讨论】:

          【解决方案5】:

          好吧,对于 Windows GUI,习惯于大量引用 MSDN,假设您想直接处理 API。

          我最喜欢学习基础知识的资源是theForger's tutorial,但那里有数百本书和其他网站。

          【讨论】:

          • (这并不是贬低你,只是贬低微软。;)
          【解决方案6】:

          我想一个重要的起点是您的工具包。您标记了这个 visualc++,所以我假设您正在查看它,但请记住还有其他工具包,例如 Qt。

          我建议从Microsoft's tutorials开始。

          【讨论】:

            【解决方案7】:

            +1 表示 Qt。我会将文档放在我对 GUI 系统的需求列表的顶部。 Qt 有很棒的文档,背后有一个庞大的社区。还有几本关于它的书。如果您独自工作而没有其他团队成员可以依赖,那么好的文档非常重要。替代品是 wxWidgets、MFC、WTL、FLTK 等等。他们都有优点和缺点。例如,FLTK 很小,只提供 GUI,而 Qt 和 wxWidgets 还包括网络、数据库访问等。在诺基亚收购之后,Qt 似乎势头最猛,例如 Qt Creator 的发布使您能够在 Visual Studio 之外开发应用程序.

            【讨论】:

              【解决方案8】:

              自从我在 Windows GUI 上使用 C++ 已经很长时间了,我的话总是避免在 Windows GUI 中使用 C++,除非你有很好的理由,我的意思是一个很好的理由,如果你需要一些性能 C# 比足以应付 90% 的情况,如果您需要更多功能,请将性能关键的东西写入 C++ dll 中,然后从 Windows 窗体或 WPF 应用程序中调用它。 它将为您节省大量时间。 仍然是我的观点,如果你有另一个我完全尊重这一点

              【讨论】:

                【解决方案9】:

                第一个问题是,您想用 C++ 开发免费、开源、供个人使用还是商业应用程序?

                1. 如果你想开发供个人使用!然后,您可以使用一些好的 C++ 工具包、框架或 API。
                2. 如果您想开发一个开源或免费的 GUI 应用程序。然后,您可以使用具有 GPL 或任何符合您需求的开源许可的 C++ 工具包、框架或 API。
                3. 您甚至可以使用具有 LGPL 许可的开源工具包、框架或 API 开发商业应用程序。

                第二个问题是你想为 Windows、Mac、Unix 还是 Linux 开发?还是所有这些,即使对于移动平台?

                1. 如果你和我一样是 Windows 用户,并且只想为 Windows 开发,我的意思是不跨平台,你可以使用 Win32 API,虽然,学习 Win32 API 更难,但它让您完全控制机器。相信我,没有其他工具可以完全控制机器。如果您不喜欢 Win32 API,出于任何原因,您可以使用 MFC,这是 Microsoft 的另一项技术,但不是免费的、陈旧的并且现在已经很少受到关注。如果您决定使用 .NET 平台进行开发,那么您拥有 C++/CLI,它是用于开发 .NET 应用程序的 C++ 语言的扩展。 .NET 为您提供类型安全、OOP 和内置垃圾收集器,在一个包中为您提供与 Windows 和 x86 或 x64 机器相关的所有 API。 .NET 有自己的世界!微软也决定将 .NET 移植到其他操作系统,Mono 项目就是一个例子……您可以使用 .NET 开发几乎所有类型的应用程序。

                2. 如果您想为跨平台开发 C++ GUI 应用程序,那么 Qt、WxWidgets 和 U++ 可以为您提供帮助。您可以使用这些库编写一次并在任何地方部署。许多开源 IDE 和编译器也可用于轻松开发 C++ 应用程序。请注意,如果您不想为跨平台开发,任何跨平台库都会产生开销,并且不可避免地会增加可执行文件的大小。

                您的 C++ 知识是否足以编写软件系统?

                事实上,如果你对C++的了解不够深,而且你不了解OOP、封装、类、接口、类型、编程模式等编程方法,你就无法使用任何潜力十足的工具包。 不要忘记每个工具包、框架或 API 都是用某种编程语言实现的。如果您确实非常了解该语言,则可以很好地使用该工具包。我想,你会明白我的意思的。

                【讨论】:

                • 不,Microsoft Visual Studio C++ MFC 是免费的,而且一直是免费的,而且没有版税。尽管微软在 9 年内没有正式升级它(他们一直忙于 C# 题外话),但它拥有庞大但老化的安装基础。然而,有一家供应商使 MFC 保持最新并且非常丰富:BCGSoft。 BCGSoft 于 2007 年向 Microsoft 交付了其原始版本的 MFC,并且仍在改进 MFC,并拥有一个很棒的帮助台,每年只需支付少量费用。如果您希望使用非专有 ISO 标准 C++ 完全控制您的 GUI 开发,那么 BCGSoft 是唯一的选择。
                【解决方案10】:

                抛开WPF或者VC++或者Qt,你也可以试试几个库,比如:

              • 开放框架
              • 处理
              • ...
              • 这里有一个使用 Openframeworks 开发 Gui 的活跃项目:
                http://www.syedrezaali.com/blog/?p=2172

                【讨论】:

                  【解决方案11】:

                  您熟悉 Microsoft Visual Studio 和 .NET 技术吗?既然你想为 Windows 平台开发,为什么不先看看Microsoft Visual C++ Express Edition.?使用 MS 提供的工具进行一些探索并搜索一些教程。

                  【讨论】:

                    【解决方案12】:

                    我们在 2020 年,但这个问题仍然是相关的。我同意 Qt 用户的看法,这是一个很棒的框架。

                    但是,还有C++Builder 可以在设计时为您提供可视化的 GUI 设计。 C++Builder 应用程序可以在 VCL(仅限 Windows)和 FireMonkey(跨平台)框架上构建。 Clang 编译器可以生成 32 位和 64 位本机可执行文件。 C++Builder 的社区版是免费的。 Delphi 无缝集成:C++Builder 项目可以直接包含 Delphi 文件并使用任何现有的 Delphi 组件包和库。

                    【讨论】:

                      猜你喜欢
                      • 2010-10-20
                      • 1970-01-01
                      • 2012-07-31
                      • 1970-01-01
                      • 2011-06-30
                      • 2010-10-11
                      • 2011-02-20
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多