如何在C中进行GUI编程?

时间:2011-03-27 15:02:19

标签: c windows user-interface graphics

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

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

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

6 个答案:

答案 0 :(得分:111)

这保证 nothing 与编译器有关。所有编译器都会编译它们给出的代码。您正在寻找的是一个GUI库,您可以使用任何所需的编译器编写代码。

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

Microsoft的Visual Studio Express C ++ is available as a free download。它包括完整版套件中提供的相同编译器。 C ++包还编译纯C代码。

由于您在Windows中工作,Windows API是一个很自然的选择。它允许您编写可以访问全套GUI控件的本机Windows应用程序。您将在C中编写WinAPI应用程序a nice tutorial here。如果您选择使用Visual Studio,它还包含一个空白WinAPI应用程序的样板代码,可以帮助您快速启动并运行。

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

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


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

TurboGUI interface sample

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

答案 1 :(得分:13)

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

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

答案 2 :(得分:8)

在主要功能中使用win API:

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

答案 3 :(得分:5)

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

答案 4 :(得分:2)

C编译器本身不会为您提供GUI功能,但是有很多库用于此类事情。最受欢迎的可能是GTK+,但是如果您刚刚开始并希望快速启动并运行GUI,则可能有点过于复杂。

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

答案 5 :(得分:2)

如果您想自己(或) Windows API Visual C Express 。获得2008年版。这是一个完整的IDE和微软用于Windows开发的非凡软件。

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