对C ++ GUI编程的建议

时间:2009-05-17 22:53:23

标签: c++ visual-c++

我已经编写了大约一年的C ++ Console / CMD-line应用程序,并希望进入Windows GUI应用程序。对于那些曾经走过这条路的人,你能给我什么建议/提示。例如:良好的阅读,教程,接近战术等......

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

12 个答案:

答案 0 :(得分:36)

我强烈建议使用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绑定,完整的Web浏览器控件(基于WebKit),多媒体播放库等等。
  7. 老实说,我浪费了几年时间为Windows开发本地软件,而我本来可以提高效率。

答案 1 :(得分:8)

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

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

您应该了解Win32的基础知识以及Windowing的工作原理。规范的大部头是Programming Windows®

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

答案 2 :(得分:4)

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

对于Microsoft Windows而言,Windows Template Library是一个非常好的贴面,同时坚持使用C ++。

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

答案 3 :(得分:4)

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

我意识到如果它不合格,这是一个非常无法提供信息/ smartass响应,所以我会注意到你没有声明你需要来做C ++ Windows GUI编程,但是你“想进入Windows GUI应用程序。“如果是这种情况,并且你没有非常具体的理由使用C ++(即用MFC编写的巨大的现有遗留代码库或者你想要构建前端的一堆C ++代码,但是会很痛苦暴露给.NET代码),然后使用C#或您选择的其他.NET语言开始学习Windows窗体或更好地学习Windows窗体将会更容易,更高效。

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

答案 4 :(得分:3)

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

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

答案 5 :(得分:2)

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

我建议从Microsoft's tutorials开始。

答案 6 :(得分:1)

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

答案 7 :(得分:1)

我在Windows GUI上使用C ++已经很久了,我的话总是在Windows GUI中避免C ++,除非你有一个很好的理由,我的意思是一个很好的理由,如果你需要一些性能C#超过足够90%的情况下,如果你需要更多的电源在C ++ DLL中编写性能关键的东西,并从Windows窗体或WPF应用程序调用它。 它会为你节省很多时间。 我仍然认为,如果你有另一个我完全尊重

答案 8 :(得分:1)

第一个问题是,您是否希望开发免费,开源,个人用途或C ++中的商业应用程序?

  1. 如果您想开发供个人使用!然后,您可以使用一些优秀的C ++ Toolkit,Framework或API。
  2. 如果您想开发一个开源或免费的GUI应用程序。然后,您可以使用具有GPL或适合您需求的任何开源许可证的C ++ Toolkits,Frameworks或API。
  3. 即使您可以使用具有LGPL许可证的开源工具包,框架或API开发商业应用程序。
  4. 第二个问题是你想为Windows,Mac,Unix或Linux开发吗?或者这些,甚至是移动平台?

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

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

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

      事实上,如果您对C ++的了解不够深入并且您不了解编程方法(如OOP,Encupsolation,类,接口,类型,编程模式等),则不能使用任何具有完全潜力的工具包。 不要忘记每个工具包,框架或API都是用某种编程语言实现的。如果您非常了解该语言,则可以非常好地使用该工具包。我想,你会理解我的观点。

答案 9 :(得分:1)

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

  • 了openFrameworks
  • 处理
  • ...
  • 这里有一个用Openframeworks开发Gui的活动项目:
    http://www.syedrezaali.com/blog/?p=2172

    答案 10 :(得分:0)

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

    答案 11 :(得分:0)

    我们现在是2020年,但问题仍然存在。我同意Qt用户,这是一个很好的框架。

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