我已经编写了大约一年的C ++ Console / CMD-line应用程序,并希望进入Windows GUI应用程序。对于那些曾经走过这条路的人,你能给我什么建议/提示。例如:良好的阅读,教程,接近战术等......
我知道这是一个非常广泛的问题,但我真的不知道如何/从哪里开始,因此不知道如何正确地提出这个问题。
答案 0 :(得分:36)
我强烈建议使用Qt Libraries有几个原因:
老实说,我浪费了几年时间为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以及其他平台上运行),您可以尝试QT或wxWidgets。
答案 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 ++中的商业应用程序?
第二个问题是你想为Windows,Mac,Unix或Linux开发吗?或者这些,甚至是移动平台?
如果你有一个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开发几乎所有类型的应用程序。
如果您想为跨平台开发C ++ GUI应用程序,那么Qt,WxWidgets和U ++可以为您提供帮助。您可以编写一次并使用这些库随处部署。许多开源IDE和编译器也可用于轻松开发C ++应用程序。请注意,如果您不想为跨平台开发,任何跨平台库都会产生开销,并且不可避免地会增加可执行文件的大小。
您的C ++知识是否足以编程软件系统?
事实上,如果您对C ++的了解不够深入并且您不了解编程方法(如OOP,Encupsolation,类,接口,类型,编程模式等),则不能使用任何具有完全潜力的工具包。 不要忘记每个工具包,框架或API都是用某种编程语言实现的。如果您非常了解该语言,则可以非常好地使用该工具包。我想,你会理解我的观点。
答案 9 :(得分:1)
抛开WPF或VC ++或Qt,你也可以试用几个库,如:
这里有一个用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组件包和库。