如何在C中进行GUI编程?

Alg*_*ist 52 c windows graphics user-interface

我想在C中进行图形编程.我已经搜索了很多关于编译器的信息,该编译器提供了丰富的函数,用于在C语言中进行GUI编程,但我找不到任何东西.

基本上我想绘制按钮然后接受用户的选择并采取适当的行动.如果你可以建议一个C编译器,或者我可以添加到我的编译器的库,将会很有帮助.我正在使用Windows操作系统.

目前,我使用的TURBO C编译器不支持创建按钮的直接方法.任何帮助,将不胜感激.

Cod*_*ray 118

这保证与编译器无关.所有编译器都会编译它们给出的代码.你正在寻找的是一个GUI库,你可以编写代码来反对使用你想要的任何编译器.

当然,话虽这么说,你的第一笔业务应该是放弃Turbo C.这个编译器大约有20年的历史,继续使用它并没有给你任何好处.您无法编写现代 GUI应用程序,因为它只会生成16位代码.所有现代操作系统都是32位,现在很多都是64位.值得注意的是,64位版本的Windows本身不会运行16位应用程序.你需要一个模拟器; 如果你只能编写在DOS模拟器中工作的应用程序,它并不会真正产生很多成就感.:-)

Microsoft的Visual Studio Express C++ 可以免费下载.它包括完整版套件中提供的相同编译器.C++包还编译纯C代码.

由于您在Windows中工作,Windows API是一个自然的选择.它允许您编写可以访问全套GUI控件的本机Windows应用程序.你会在这里找到一个很好的教程,用C编写WinAPI应用程序.如果你选择使用Visual Studio,它还包括一个空白的WinAPI应用程序的样板代码,可以帮助你快速启动和运行.

如果你真的关心学习如何做到这一点,Charles Petzold的Programming Windows是该主题的规范资源,绝对值得一读.整个Windows API都是用C语言编写的,完全有可能用C语言编写全功能的Windows应用程序.您不需要stinkin'C++.

这是做的方式,至少.正如其他答案所示,GTK也是一种选择.但它生成的应用程序在Windows上看起来非常糟糕.


编辑:哦亲爱的...看起来你并不是唯一一个想要使用过时的编译器编写"GUI"应用程序的人.Google搜索会显示以下库:TurboGUI:Turbo C/C++的GUI框架:

 TurboGUI接口示例

如果你是另一个陷入绝望的印度学校系统的穷人,并被迫使用Turbo C来完成你的教育,这可能是一个选择.我不喜欢推荐它,因为一旦你毕业,学习解决它的局限对你来说是完全没用的,但是如果你感兴趣的话,显然它就在你身边.

  • 非常好的答案.事实上,你已经正确地猜到了过时的印度学校系统.请你建议一些现代的C编译器. (8认同)
  • @Algorithmist:我建议使用Visual Studio; 它是微软编译器附带的IDE.Express版(包括与专业版相同的编译器)是免费下载的.请参阅我的回答链接.[MinGW](http://www.mingw.org/)是另一种选择.它是Windows的GCC端口.我从来没有使用过任何这些.Visual Studio是我用于Windows C和C++开发的首选环境.如果您有兴趣探索该领域,那么Stack Overflow还有其他关于Windows的替代C编译器的问题. (6认同)

San*_*nda 16

用C语言创建一些GUI的最着名的库肯定是GTK.

使用此库,您可以轻松创建一些按钮(例如).当用户单击该按钮时,会发出一个信号,您可以编写一个处理程序来执行某些操作.

  • "用C语言创建一些GUI的最着名的库肯定是GTK." 也许在你的世界里,它是最着名的.我一直认为Win32更为人所知. (9认同)
  • "我一直认为Win32更为人所知." ---你认为对.Win32因其*便携性*而广为人知. (2认同)

Bla*_*ear 8

在主函数中使用win API:

  1. RegisterClassEx()注意:你必须提供一个指向函数的指针(通常称为WndProc),它处理WM_CREATE,WM_COMMAND等窗口消息.
  2. CreateWindowEx()
  3. 的ShowWindow()
  4. UpdateWindow()

然后编写另一个处理win消息的函数(在#1中提到).当您收到消息WM_CREATE时,您必须调用CreateWindow().该类是该窗口的控件,例如"edit"是一个文本框,"button"是一个..按钮:).您必须为每个控件指定一个ID(您可以选择,但在所有控件中都是唯一的).CreateWindow()返回该控件的句柄,需要记忆.当用户单击控件时,您会收到带有该控件ID的WM_COMMAND消息.在这里你可以处理那个事件.您可能会发现有用的SetWindowText()GetWindowText(),它允许您设置/获取任何控件的文本.
您只需要win32 SDK.你可以在这里得到它.


Dav*_*own 5

AC 编译器本身不会为您提供 GUI 功能,但有很多用于此类功能的库。最流行的可能是GTK+,但如果您刚刚开始并想要快速启动并运行 GUI,它可能有点太复杂。

对于更简单的事情,我会推荐IUP。有了它,您可以使用一种称为 LED 的简单 GUI 定义语言来布局控件(但如果您愿意,也可以使用纯 C 语言来实现)。


小智 5

Windows APIWindows SDK,如果你想自己构建所有东西(或)Windows APIVisual C Express。获取 2008 版。这是一个成熟的 IDE,也是 Microsoft 用于 Windows 开发的出色软件。

所有操作系统都是用 C 编写的。因此,您用 C 编写的任何应用程序、控制台/GUI 都是操作系统的标准编写方式。

  • 考虑到创建它所花费的资金量,结果是相当“平凡”的。 (6认同)

ser*_*gio 5

C更像是一种硬件编程语言,有简单的GUI构建器,适用于C,GTK,Glade等.问题是在C语言中创建一个简单的程序,使GUI成为一个简单的部分,困难的部分是结合两者,你的程序和GUI之间的接口是一个令人头疼的问题,不同的GUI使用不同的方式,一些投掷全局变量,一些使用插槽.拥有一个可以轻松绑定C程序变量和输出的GUI构建器会很不错.当您克服内存分配和指针时,CLI编程很容易,GUI可以使用使用拖放的IDE.但我认为它可能更简单.