在 Xlib 标头中找不到 XMapWindow() 的定义

问题描述 投票:0回答:1

我有这个简单的代码,使用 X11 绘制一个小窗口:

int main(int, char*[])
{
    Display* display = XOpenDisplay(NULL);
    Window window = XCreateSimpleWindow(
        display, XDefaultRootWindow(display),
        100, 100, 200, 200, 4, 0, 0);
    XEvent event;

    XMapWindow(display, window);
    XSelectInput(display, window, KeyPressMask | ButtonPressMask | ExposureMask);

    while (True) {
      XNextEvent(display, &event);
    }

    return 0;
}

一切正常,窗口绘制没有问题。

问题是我真的很想了解 X11 是如何工作的,所以我正在阅读标头的源代码,但我无法找到

XMapWindow()
的定义 - 我需要帮助。

这是我在

Xlib.h
头文件中找到的唯一模拟。

extern int XMapWindow(
    Display*        /* display */,
    Window      /* w */
);
c linux x11 xlib
1个回答
1
投票

您可以在

libX11源
中找到XMapWindow()的实现,特别是在src/MapWindow.c:XMapWindow()中。

归结为一些锁定和

_XGetRequest(dpy, X_MapWindow, SIZEOF(xResourceReq))
调用。 这是在 src/XlibInt.c:_XGetRequest() 中定义的,正如您可以通过名称猜到的那样,它将 X_MapWindow 请求添加到发送到 X 服务器的请求队列中。

X 服务器(管理实际显示)如何对其进行操作,取决于 X 服务器的实现。

© www.soinside.com 2019 - 2024. All rights reserved.