我创建了一个使用XCreateWindow创建窗口的程序。这完全适用于我的系统和许多其他系统,但在很多方面,它会导致一些奇怪的问题。例如我从中获取的ID与启动程序的终端的ID冲突。在一个这样的情况下,gnome-terminal也有窗口ID 0x2400001(父是root),我的程序窗口ID也是0x2400001(它的父也是root)。有什么建议可能会出错?
答案 0 :(得分:0)
窗口ID可能仅在与X服务器的每个连接中唯一(即连接到X服务器的不同进程可能获得相同的窗口ID,并且X服务器使用连接AND窗口ID在内部将它们分开)。
我认为X对窗口ID没有任何承诺,例如它们在流程或任何事物中都是独一无二的,因此最好不要将它们用于任何其他目的。
我不会惊讶地看到X实现只返回连续数字作为窗口ID,以每个连接的相同值(例如1)开始,这可以解释您的体验,例如每个客户端的第一个窗口似乎在该X实现上具有相同的窗口ID。
答案 1 :(得分:0)
Xserver为每个窗口创建一个唯一的opaque id。 您用于识别窗口ID的方法可能是错误的。
您的问题是另一个问题的症状。 你真的想解决什么问题?
答案 2 :(得分:0)
除了其他答案:运行xwininfo -root -all
(阅读其手册页以获取更多信息)。检查gnome-terminal窗口ID和应用程序窗口ID。