« 树结构的管理 | 返回首页 | lua 调试器制作注意 »

X Window 的 Resize 处理

程序员在陌生领域工作时,都想寻求范例。看起来,我们都很依赖 Meme Machine 。

可惜的是, X Window 领域的直接针对 XLib 编程的范例太少。偶尔碰到点问题都让人很痛苦。只有反复研究文档了。

我的程序在处理 Resize 消息时老是不正确,仔细阅读文档后,发现是以前理解有问题。

起先,我为窗口消息注册了 ResizeRedirectMask ,然后在消息循环中就可以得到一个 ResizeRequest 消息。然后,我处理这个消息,但结果总是不对。

今天研究了一下,发现 ResizeRedirectMask 会导致 no further processing is performed 。也就是说,通知你 resize 请求后,X 系统就不管你了。至于还差什么事情要做(比如改变客户区大小),我也不知道该怎么做才完全正确。(如果在 Windows 里,应该是调用 DefaultWindowProc )

不过解决方法其实也很简单,不用注册 ResizeRedirectMask ,而注册 StructureNotifyMask 。在窗口改变的时候, X 会发一个 ConfigureNotify 。因为这个只是 Notify ,所以 X 会把所有它应该做的事情做的周全。

btw, Sean 同学推荐我用一下 XCB ,因为 XLib 用起来实在是太头痛了。这是个替代物。

Comments

用gtk试试看!
终于出新帖了!
范例都是前人创造的,高手到了一定境界只能自己去创造了!:)
X-Windows 一样有华丽的游戏
看不懂!但还是要抢沙发滴=.=
嗯,不会用X-Windows来打游戏吧?应该不华丽吧?

Post a comment

非这个主题相关的留言请到:留言本