到目前为止,我所有的C ++程序都一直在使用命令行界面,而我所遇到的唯一其他语言是不支持GUI的PHP。
我从哪里开始使用C ++进行图形用户界面编程?如何创建一个?
到目前为止,我所有的C ++程序都一直在使用命令行界面,而我所遇到的唯一其他语言是不支持GUI的PHP。
我从哪里开始使用C ++进行图形用户界面编程?如何创建一个?
Answers:
本质上,操作系统的窗口系统公开了一些API调用,您可以执行这些API调用来执行诸如创建窗口或在窗口上放置按钮之类的工作。基本上,您会获得一组头文件,并且可以在导入的库中调用函数,就像使用stdlib和一样printf
。
每个操作系统都带有自己的GUI工具包,头文件套件和API调用,以及它们自己的处理方式。还有诸如GTK,Qt和wxWidgets之类的跨平台工具包,可帮助您构建可在任何地方运行的程序。他们通过在每个平台上具有相同的API调用来实现此目的,但是对于那些调用本机OS API调用的API函数,则采用不同的实现。
他们都将拥有一个共同点,这与CLI程序有所不同,这就是事件循环。那里的基本思想有些复杂,并且很难压缩,但是从本质上讲,这意味着在您的主类/ main函数中不会发生很多麻烦,除了:
有很多有关基于事件的编程的资源。如果您有使用JavaScript的经验,那么它是相同的基本思想,除了脚本编写者无法访问或控制事件循环本身或存在哪些事件之外,您唯一的工作就是编写和注册处理程序。
您应该记住,GUI编程通常非常复杂和困难。如果您可以选择,将嵌入式Web服务器集成到程序中并具有基于HTML / Web的界面实际上要容易得多。我遇到的一个例外是Apple的Cocoa + Xcode +界面构建器+教程,使它成为我所见过的GUI编程新手最容易接近的环境。
有很多免费的可移植GUI库,每个都有自己的优点和缺点:
特别是Qt拥有不错的教程和工具,可以帮助您入门。请享用!
但是请注意,应避免使用平台特定的功能,例如Win32 API或MFC。那将您不必要地捆绑在特定平台上,几乎没有好处。
给定“以Windows XP为例”的注释,那么您的选择是:
通过其API直接与操作系统进行交互,对于Microsoft Windows而言,这是一个意外的意外调用Windows API。WinAPI的权威参考是Microsoft的MSDN网站。一个流行的在线初学者教程是TheForger的Win32 API编程教程。最经典的书籍是Charles Petzold的《Programming Windows,第5版》。
使用平台(在OS和编译器方面)特定的库,例如MFC,它将WinAPI包装到C ++类中。再次参考是MSDN。关于这方面的经典书籍是Jeff Prosise的《使用MFC编程窗口》,第二版。如果您使用的是CodeGear C ++ Builder,则此处的选项为VCL。
使用跨平台库,例如GTK +(C ++包装器:gtkmm),Qt,wxWidgets或FLTK包装了特定操作系统的API。这些优点是,通常来说,您的程序可以针对不同的OS进行编译,而无需更改源代码。正如已经提到的,它们每个都有自己的优点和缺点。选择使用哪个许可证时要考虑的一个因素是许可证。对于给出的示例,GTK +&gtkmm是LGPL的许可,Qt是各种许可(包括专有选项),wxWidgets是其自己的wxWindows许可(已重命名为wxWidgets Licence),FLTK是LGPL的例外。有关参考,教程和/或书籍,请访问每个人的网站以获取详细信息。
由于我已经到过你现在的位置,我想我可以“回答”你。
事实是,没有简单的方法来制作GUI。GUI高度依赖于平台和OS特定的代码,这就是为什么您应该开始阅读有关窗口管理API的目标平台/ OS文档的原因。好处是:有很多库可以解决这些限制,并将抽象体系结构的差异集成到单个多平台API中。之前建议的GTK和Qt是其中的一些库。
但是,即使这些也有点太复杂了,因为同时引入了许多新概念,数据类型,名称空间和类。因此,它们通常与某些GUI WYSIWYG编辑器捆绑在一起。它们几乎使带GUI的编程软件成为可能。
总结起来,还有一些非免费的GUI开发环境,例如Microsoft的Visual Studio。对于那些具有Delphi经验的背景,Visual Studio可能会更熟悉。Microsoft还提供了完整的Visual Studio环境的免费替代方案:Visual Studio Express,对于开始GUI开发而言,这已经绰绰有余了。
我找到了一个带有“简单”教程的网站:http : //www.winprog.org/tutorial/start.html