Miz*_*zor 6 c++ linux windows cross-platform
在Windows中创建窗口时,必须定义一个(c ++)
LRESULT CALLBACK message_proc(HWND Handle, UINT Message, WPARAM WParam, LPARAM LParam);
Run Code Online (Sandbox Code Playgroud)
处理从操作系统发送到窗口的所有消息,如按键等.
我正在寻找关于同一系统如何在Linux中工作的一些阅读.也许是因为我在术语上略显缺乏,但我没有通过谷歌找到任何东西(虽然我肯定必须有足够的!).
编辑:我已经研究过像QT和WxWidgets这样的工具,但这些框架似乎更倾向于开发GUI广泛的应用程序.我正在寻找一种方法来为我的OGL图形创建一个基本窗口(限制调整大小,边框/装饰)并在多个平台上检索输入.根据我最初的研究,这种函数是检索输入的唯一方法.
什么是最好的路线?阅读,学习然后使用QT或WxWidgets?或者学习系统如何工作并实现我想要的那些基本功能?
在最基本的层面上你有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比喻来模仿windows的行为.这样你可能有一个WNDPROC,但本身X不提供这样的东西.
在重新发明轮子之前,最好先看看他们正在使用的类似应用程序.
如果您需要简单的东西,可以尝试SDL http://www.libsdl.org/,这是一个旨在开发游戏/简单应用程序的跨平台库.另一个选择是Allegro游戏库http://www.talula.demon.co.uk/allegro/.
原则上是完全一样的。但是,它与与操作系统的通信无关(在 win32 上也没有,使用 user32.dll 完全是可选的)
GUI 应用程序在某处有一个事件循环,它在某个级别处理来自队列的消息。
有很多库通常用于“隐藏”这种行为——您可以使用它们(实际上,您应该使用它们)。如果有的话,Xlib 事件系统甚至比 Win32 的 user32.dll 更反常,并且没有被广泛理解,因此很少有人直接使用它。
在 Linux 或 Windows 中,应用程序可以使用低级 GUI,也可以使用库。大多数使用图书馆。应用程序也可以选择两者都不做,也可以在没有 GUI 的情况下运行(服务器应用程序通常会这样做)。应用程序可以创建多个线程,其中一个位于事件循环中,而其他线程的工作方式不同。这也是一种流行的方法。
它完全和完全不同.该窗口过程100%特定于Windows操作系统.对于linux,它将取决于窗口管理器(gnome,kde - 正如你已经提到的那样).如果您希望进行跨平台开发,您可能需要查看QT之类的内容.
您可能希望查看以下网址:
http://www.qtsoftware.com/products/appdev
http://en.wikipedia.org/wiki/Qt_toolkit
| 归档时间: |
|
| 查看次数: |
5185 次 |
| 最近记录: |