【问题标题】:How can I do GUI programming in C? [closed]如何在 C 中进行 GUI 编程? [关闭]
【发布时间】:2011-07-23 22:20:48
【问题描述】:

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

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

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

【问题讨论】:

  • 为什么要用 C 来做 GUI?使用 Java、Python 或 C++ 不是更简单吗?
  • 停止使用 TURBO C 并开始使用现代编译器。
  • @pajton:更正:使用 Python* 不是更简单吗?
  • @Gihan De Silva,您提供的链接已不存在。涡轮万岁

标签: c windows user-interface graphics


【解决方案1】:

这保证与编译器无关。所有编译器所做的就是编译它们给出的代码。您正在寻找的是一个 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 应用程序。你会发现a nice tutorial here 在 C 中编写 WinAPI 应用程序。如果你选择使用 Visual Studio,它还包含空白 WinAPI 应用程序的样板代码,可以让你快速启动和运行。

如果您真的关心学习这样做,Charles Petzold 的Programming Windows 是该主题的规范资源,绝对值得一读。整个 Windows API 都是用 C 编写的,完全可以用 C 编写功能齐全的 Windows 应用程序。你不需要臭 C++。

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


编辑: 看来您不是唯一一个想使用过时的编译器编写“GUI”应用程序的人。谷歌搜索出现以下库:TurboGUI: A GUI Framework for Turbo C/C++:

 

如果您需要使用 Turbo C,这可能是一个选项。

【讨论】:

  • @Algorithmist:我建议使用 Visual Studio;它是微软编译器附带的 IDE。 Express 版(包括与专业版相同的编译器)是免费下载的。请参阅我的答案以获取链接。 MinGW 是另一种选择。它是 GCC 到 Windows 的一个端口。我从来没有使用过这些。 Visual Studio 是我选择的 Windows C 和 C++ 开发环境。如果您有兴趣探索该领域,Stack Overflow 上还有其他关于 Windows 替代 C 编译器的问题。
  • @Algorithmist 我使用配置了 Netbeans 的 Cygwin。检查此netbeans.org/community/releases/60/cpp-setup-instructions.html。您拥有的其他选项是使用配置了 MinGW 的 Eclipse ...检查此banym.de/eclipse/install-eclipse-cdt-on-windows-7
  • @Algorithmist,我在windows中使用gcc只需安装GOW(Gnu On Windows),它比Cygwin轻。
【解决方案2】:

用 C 语言创建一些 GUI 的最著名的库当然是 GTK。

使用这个库,您可以轻松地创建一些按钮(以您的示例为例)。当用户点击按钮时,会发出一个信号,您可以编写一个处理程序来执行一些操作。

【讨论】:

  • 我看到的问题是旧的 turbo C 编译器。不确定它和它周围的库是否是最新的,足以处理 gtk 构建。
  • “用 C 语言创建一些 GUI 的最著名的库当然是 GTK。”也许在你们的世界里它是最有名的。我一直认为 Win32 更广为人知。
  • “我一直认为 Win32 更广为人知。” --- 你想的没错。 Win32 因其便携性而广为人知。
  • 在 macbook 上编译 GTK 是一场噩梦。
【解决方案3】:

在主函数中使用 win API:

  1. RegisterClassEx() 注意:您必须提供一个指向处理诸如 WM_CREATE、WM_COMMAND 等 Windows 消息的函数(通常称为 WndProc)的指针
  2. CreateWindowEx()
  3. ShowWindow()
  4. UpdateWindow()

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

【讨论】:

  • 不过,您将需要 Windows SDK。下载它here。 (它包含在 Visual Studio 中。如果你想使用不同的编译器,你只需要单独下载它。)
  • @Cody Gray:忘记了,可能它包含在我的 masm32 设置中。 :) 我会添加到我的答案中
【解决方案4】:

C 更像是一种硬件编程语言,有用于 C、GTK、Glade 等的简单 GUI 构建器。问题是用 C 编写一个简单的程序,制作一个简单的 GUI,困难的部分是将两者结合起来,你的程序和 GUI 之间的接口是一个令人头疼的问题,不同的 GUI 使用不同的方式,一些抛出全局变量,一些使用插槽。如果有一个 GUI 构建器可以轻松绑定您的 C 程序变量和输出,那就太好了。当您克服内存分配和指针时,CLI 编程很容易,GUI 您可以使用使用拖放的 IDE。但我认为它可以更简单。

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

    • 我现在非常感谢您推荐 IUP,因为过去 6 天我一直在使用 GTK,但一无所获。
    【解决方案6】:

    Windows API 和 Windows SDK 如果您想自己构建一切(或)Windows API 和 Visual C Express时间>。获取 2008 年版。这是一个成熟的 IDE,也是 Microsoft 用于 Windows 开发的出色软件。

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

    【讨论】:

    • 考虑到创建它所花费的金钱,结果相当unremarkable。
    猜你喜欢
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    相关资源
    最近更新 更多