如何在C ++中构build一个GUI?

到目前为止,我所有的C ++程序都是CLI,而我唯一经历的其他语言是PHP,它不支持这一点,但是我从哪里开始用C ++进行GUI编程呢?

顺便说一句,如果GUI在这里是错误的话,我很抱歉。 我不确定是否正确。

编辑:基本上,我的问题是如何 。 我从哪说起呢? 我怎样才能创buildGUI? 我从来没有正式的编程教育,所以我完全不知道。

本质上,操作系统的窗口系统公开了一些API调用,您可以执行这些调用来完成创build窗口等作业,或者在窗口上放置一个button。 基本上你会得到一套头文件,你可以在这些导入的库中调用函数,就像使用stdlib和printf

每个操作系统都有自己的GUI工具包,头文件和API调用,以及他们自己的做事方式。 还有像gtk,qt和wx这样的跨平台工具包,可以帮助您构build可在任何地方工作的程序。 他们通过在每个平台上进行相同的API调用来实现这一目标,但是调用原生OS API调用的那些API函数的实现却是不同的。

有一件事情会和CLI程序有所不同,就是所谓的事件循环。 其基本思想有些复杂,难以压缩,但实质上这意味着你的主要课程/主要function并不是一团糟,除了:

  • 如果有任何新事件,请检查事件队列
  • 如果有的话,将这些事件分发给适当的处理程序
  • 当你完成后,控制回到操作系统(通常用某种特殊的“睡眠”或“select”或“收益”函数调用)
  • 那么当操作系统完成时,yield函数将会返回,而你又有一个循环。

有大量关于事件编程的资源。 如果你有使用javascript的经验,除了你自己没有对事件循环本身的访问或者控制,或者有什么事件之外,你的唯一工作就是编写和注册处理程序。

您应该记住,一般来说,GUI编程是非常复杂和困难的。 如果你有select,实际上将embedded式networking服务器集成到你的程序中并且具有基于html / web的接口要容易得多。 我遇到的一个例外是苹果公司的cocoa + xcode +界面构build器+教程,这使得它成为了新手GUI界面编程人员最容易接触的环境。

有许多免费的便携式graphics用户界面库 ,每个都有自己的优点和缺点:

  • Qt的
  • GTKmm (基于GTK + )
  • wxWidgets的
  • FLTK
  • 终极++
  • JUCE

特别是Qt有很好的教程和工具,可以帮助你入门。 请享用!

但是请注意,您应该避免使用特定平台的function,例如Win32 API或MFC。 这在一个特定的平台上不必要的绑定,几乎没有任何好处。

独立操作系统的algorithm“ 三个步骤在C ++中创buildGUI应用程序 ”:

  1. 安装Qt Creator
    替代文字
  2. 创build新项目(Qt4 Gui应用程序)
    替代文字
  3. build立它。

恭喜,您已经在C ++中获得了您的第一个GUI。

现在,您已经准备好阅读大量文档来创build比“Hello world”GUI应用程序更复杂的东西。

给出“以Windows XP为例”的评论,那么你的select是:

  • 通过API直接与操作系统进行交互,这对于Microsoft Windows来说是令人惊喜的,叫做Windows API 。 WinAPI的明确参考是微软的MSDN网站 。 一个受欢迎的在线初学者教程是Forger的Win32 API编程教程 。 Charles Petzold的Programming Windows,5th Edition就是这本书的经典之作。

  • 使用一个平台(包括操作系统和编译器),如MFC ,将WinAPI封装到C ++类中。 这是MSDN的参考。 一个经典的书是杰夫Prosise的编程Windows与MFC,第二版 。 如果您使用的是CodeGear C ++ Builder,那么这里的选项是VCL 。

  • 使用一个跨平台的库,比如GTK + (C ++ wrapper: gtkmm ), Qt , wxWidgets或者FLTK来包装特定的操作系统的API。 这些优点是一般情况下,你的程序可以编译为不同的操作系统,而无需更改源代码。 正如已经提到的,它们各有其优点和缺点。 select使用哪一个的一个考虑是它的许可证。 对于给出的例子,GTK +&gtkmm是LGPL下的许可证,Qt包含专有选项的各种许可证,wxWidgets是在它自己的wxWindows许可证下(重命名为wxWidgets许可证),FLTK在LGPL下例外。 有关参考资料,教程和/或书籍,请参阅每个网站的详细信息。

既然我已经在你现在所在的地方,我想我可以“回答”你。

事实是没有简单的方法来制作GUI。 GUI的高度依赖于平台和操作系统特定的代码,这就是为什么你应该开始阅读你的目标平台/ OS窗口pipe理API的文档。 好处是:有许多库解决了这些限制,并将构架差异抽象为单个多平台API。 以前提到的那些,GTK和QT就是这些库中的一部分。

但是即使这些东西太复杂了,因为很多新的概念,数据types,命名空间和类被一次性引入。 出于这个原因,他们使用一些GUI WYSIWYG编辑器捆绑在一起。 他们几乎可以用GUI编程软件。

综上所述,GUI开发中也存在非自由的“环境”,例如Microsoft的Visual Studio。 对于那些有Delphi经验背景的人,Visual Studio可能会比较熟悉。 从Microsoft提供的完整的Visual Studio环境还有一些免费的替代scheme: Visual Studio Express ,这对开始GUI开发已经足够了。

我发现一个网站有一个“简单”的教程: http : //www.winprog.org/tutorial/start.html

Qt是最好的。

它很容易在C ++中创build一个.NET Windows GUI。

请参阅MSDN的以下教程。 您可以免费下载所需的一切(Visual C ++ Express)。

当然你可以把自己绑定到.NET上,但是如果你只是在玩游戏或者只是需要一个Windows应用程序,你会没事的(现在大多数人还是有Windows的)。

我使用FLTK,因为QT不是免费的。 我不selectwxWidgets,因为我的第一个testing用一个简单的Hello World程序产生一个24Mb的可执行文件,fltk 0.8MB …