【问题标题】:Making a GUI without a framework in C用 C 语言制作没有框架的 GUI
【发布时间】:2013-02-20 21:04:58
【问题描述】:

我正在学习 C 编程语言的 C(我刚刚完成了第 2 章或第 2 单元),我浏览到最后,发现没有任何关于如何创建 GUI 的内容,以及我的内容我抬头看了看,似乎我必须使用一个框架,但我讨厌这样的想法。我如何在没有框架的情况下创建 GUI?这些框架究竟是如何工作的,它们是用什么语言编写的?我没有做一个庞大的应用程序,即使我需要一个星期,编写一个 GUI 应用程序(用 C 语言)来做一些简单的事情,比如创建一个窗口,是否可行?

【问题讨论】:

    标签: c user-interface frameworks


    【解决方案1】:

    是的,不行。

    C 不能做任何事情,除了管理内存和可能做软件中断(如果你做指针黑客)。

    你需要一个库来做任何事情。

    GUI 非常复杂,你不能用它做任何“简单”的事情。这是我每天都面临的问题。

    如果你想要一个 C 语言的窗口,你需要 X11、GTK、Windows API、Video hacking 或其他有趣的东西。

    哦,视频黑客是不行的,如果您在未经其许可的情况下尝试触摸视频内存,操作系统也会抛出异常。

    哦,还有你说的“简单按钮”,在Windows API中其实就是一个Window本身,不是很简单。

    【讨论】:

    • "如果您在未经其许可的情况下尝试触摸显存,操作系统将抛出异常。" - 而是用户态进程可以访问虚拟内存,因此将地址视为物理地址是行不通的。
    • 好的,我该如何使用 GtK?我知道如何使用 winapi(c#.. .net 框架等),但是如何使用 GTK?
    • 在基于 Debian 的系统上设置 GTK 的教程非常简单。编译需要“gcc helloworld.c -o helloworld pkg-config --cflags gtk+-2.0”或类似的东西。使用 apt-get 您可以在几分钟内设置 gtk。虽然,祝你在其他地方使用它好运。我花了几天时间在 Windows 上进行设置。除了 Ubuntu 和 Fedora(我从未使用过 gtk)之外,我还没有真正使用过很多基于 unix 的系统。
    • 我目前使用 fedora lxde spin 进行开发,使用 fedora gnome 进行桌面。
    【解决方案2】:

    您可以使用 WINAPI 制作基本框架

    There is a great tutorial here.

    使用 C 和 WINAPI 等原始框架的问题是管理布局和状态变得非常困难。

    如果您以普通操作系统为目标,则仅C 的要求变得不合理。我建议您使用C++Qt 并在C++ 编译器中编译您的C 代码。

    【讨论】:

    • 对不起,任何 WINAPI 的东西都是不行的,这需要跨平台,我是 linux 用户。
    • @David 之前可能应该说过 :-)
    【解决方案3】:

    不是最好的选择。我会建议一个跨平台库,比如GTK+

    【讨论】:

    • 好的,我该如何使用 GtK?我知道如何使用 winapi(c#.. .net 框架等),但如何使用 GTK? ——
    【解决方案4】:

    您可以基于 OpenGL 或 Xlib 构建自己的框架。或者使用像MotifCGUI 这样的好的图形库。或者使用像 GTK 这样糟糕的东西。

    【讨论】:

    • 你为什么喜欢cgui和motif,你对gtk有什么不满?火狐不是用gtk做的吗?
    • @David,GTK 是一个糟糕的库:不仅外观如此,内部结构也如此(基于 glib 的结构是一场真正的噩梦,它几乎就像 Qt)!
    猜你喜欢
    • 2017-01-31
    • 2012-03-28
    • 2013-02-18
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多