![]() |
1
4
在最基本的层面上,你有X Window协议 http://en.wikipedia.org/wiki/X_Window_System_core_protocol ,如果你想做任何应用程序,我们可能会很难处理。堆栈上的下一个是Xlib http://en.wikipedia.org/wiki/Xlib 它是围绕X协议的“方便”包装器,但对于“现实生活”应用程序来说仍然很复杂。大多数其他框架都是在Xlib之上构建的,试图简化应用程序开发。最知名的有:Xt、Gtk、Qt等。 就像在窗口中一样,你有一个“事件循环”,如果你愿意,你可以在它上面实现一个GetMessage/DispachMessage隐喻来模仿窗口的行为。这样你可能会有一个WNDPROC,但X本身并没有提供这样的东西。 在重新发明轮子之前,最好先看看类似的应用程序,看看它们在使用什么。 如果你需要一些简单的东西,你可以试试SDL http://www.libsdl.org/ ,这是一个旨在开发游戏/简单应用程序的跨平台库。另一种选择是Allegro游戏库 http://www.talula.demon.co.uk/allegro/ . |
![]() |
2
7
原则上是完全一样的。然而,它与操作系统的通信无关(在win32上也没有,使用user32.dll是完全可选的) GUI应用程序在某个地方有一个事件循环,它在某种程度上处理来自队列的消息。 有很多库通常用于“隐藏”这种行为——你可以使用它们(事实上,你应该使用它们)。如果说有什么不同的话,那就是Xlib事件系统比Win32的user32.dll事件系统更反常,而且不太被广泛理解,因此直接使用它的人更少。 在Linux或Windows中,应用程序可以使用低级GUI,也可以使用库。大多数人使用图书馆。应用程序也可以选择两者都不做,也可以在没有GUI的情况下运行(服务器应用程序通常会这样做)。应用程序可以创建多个线程,其中一个线程位于事件循环中,其他线程的工作方式不同。这也是一种流行的方法。
|
![]() |
3
5
这完全不同。该窗口过程100%特定于Windows操作系统。对于linux,它将取决于窗口管理器(gnome、kde——正如您已经提到的)。如果你想进行跨平台开发,你可能想看看QT这样的东西。 您可能希望查看以下网址:
http://www.qtsoftware.com/products/appdev
|
![]() |
4
2
正如xhantt所说,您正在寻找的等效消息的传输方式是X Window系统。事实上,这可能有点复杂。 使用XLib,您需要在主循环中处理事件的注册和取消使用。请参阅 XLib manual 有关如何进行的完整描述。但不要忘记,您只会以这种方式捕获窗口和输入事件。并非所有操作系统消息。 您还可以查找 XCB 这是一个更新的,可能更容易的库。 如果你在这两个库的基础上构建你的应用程序,它将在每个WM下平稳运行(几乎,我们永远不能太确定)。而且,您不需要任何大多数linux用户对其安装没有的依赖性。如果你使用Qt、GTK等……它会更容易,在任何WM下都能工作,但它们可能没有安装库。 |
![]() |
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 1 年前 |