虽然否则使用指针,我到目前为止看到的所有Xlib函数都是按值传递它们的Window结构,而不是通过引用。 E.g:
https://tronche.com/gui/x/xlib/ICC/client-to-window-manager/XGetClassHint.html
https://tronche.com/gui/x/xlib/window/XDestroyWindow.html
有什么特别的理由吗?特别是,在XGetClassHint的情况下,第一个和第三个参数通过引用传递,但第二个参数不是。
答案 0 :(得分:2)
看起来这些例子中的Window
不是结构;它只是一个无符号长。那就是:
#include <X11/X.h>
Window w;
如果我通过gcc -E
通过,我会看到:
$ gcc -E wintest.c | grep Window
typedef XID Window;
Window w;
XID
是:
$ gcc -E wintest.c | grep XID
typedef unsigned long XID;
答案 1 :(得分:2)
Window
是一个生活在X-Server上的野兽,而不是客户端上的野兽。客户端唯一需要的是一个唯一地指向服务器上真实窗口的标识符。这不是一个结构,而是句柄或XID
。