1
4
原则上是完全相同的。但是,它与操作系统的通信没有任何关系(在win32上也没有关系,使用user32.dll完全是可选的) GUI应用程序在某个地方有一个事件循环,它在某个级别处理来自队列的消息。 有很多库通常用于“隐藏”这种行为——您可以使用它们(实际上,您应该这样做)。如果有的话,xlib事件系统甚至比win32的user32.dll事件系统更为反常,并且不被广泛理解,因此直接使用它的人就更少了。 在Linux或Windows中,应用程序可以使用低级GUI,也可以使用库。大多数人使用图书馆。应用程序也可以选择两者都不做,并且在没有GUI的情况下运行(服务器应用程序通常这样做)。应用程序可以创建多个线程,其中一个线程位于事件循环中,其他线程的工作方式不同。这也是一种流行的方法。
|
2
7
在最基本的层面上,你有X窗口协议 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/ . |
3
5
完全完全不同。该窗口过程100%特定于Windows操作系统。对于Linux,它将取决于窗口管理器(gnome、kde——正如您已经提到的那样)。如果您希望进行跨平台开发,那么您可能需要查看Qt之类的内容。 您可能希望查看以下URL:
http://www.qtsoftware.com/products/appdev
|
4
2
如xhantt所述,传输您要查找的等价消息的是x窗口系统。这确实有点复杂。 使用XLIB,您需要在主循环中处理事件注册和出列。见 XLib manual 有关如何继续的完整说明。但不要忘记,您将只捕获窗口并以这种方式输入事件。不是所有的操作系统消息。 你也可以找 XCB 这是一个更新的,可能更简单的图书馆。 如果您在这两个库的基础上构建应用程序,它将在每个WM下(几乎,我们永远都不能确定)顺利运行。而且,您不需要大多数Linux用户对其安装没有任何依赖性。如果你用qt,gtk等…在任何WM下工作都会更容易,但它们可能没有安装库。 |
itMaxence · 从c库调用objective-c方法 7 年前 |
seladb · Makefile-目录不存在时失败-跨平台 7 年前 |
Ryan · 调整StackLayout元素的高度 7 年前 |
Sergei G · C printf跨平台格式,无警告[重复] 7 年前 |