窗口没有响应XMoveResizeWindow请求



我有一个窗口管理器代码,它可以做窗口移动,窗口调整大小。但是当我尝试在XMoveResizeWindow同时做这两件事时,它不工作,也没有错误日志。

我的代码如下

void WindowMgrLib::MoveResizeWindow(Window window, int x, int y, int width, int height)
{
Display *display = XOpenDisplay(NULL);
XSetErrorHandler(catch_error);
XMoveResizeWindow(display, window, x, y, width, height);
printf("x = %d, y= %d, width = %d, height=%dn", x, y, width, height);
XFlush(display);
XCloseDisplay(display);
}
void WindowMgrLib::MoveWindow(Window window, int x, int y)
{
Display *display = XOpenDisplay(NULL);
XSetErrorHandler(catch_error);
XMoveWindow(display, window, x, y);
XFlush(display);
XCloseDisplay(display);
}
void WindowMgrLib::ResizeWindow(Window window, int w, int h)
{
Display *display = XOpenDisplay(NULL);
XSetErrorHandler(catch_error);
XResizeWindow(display, window, w, h);
XFlush(display);
XCloseDisplay(display);
}

这里WindowMgrLib::MoveWindowWindowMgrLib::ResizeWindow工作良好。谁能告诉我WindowMgrLib::MoveResizeWindow有什么问题?

XCloseDisplay

XCloseDisplay函数关闭与X服务器的连接,用于显示结构中指定的显示,并且销毁客户端在此显示上创建的所有窗口,资源id (Window, Font, Pixmap, Colormap, Cursor, and GContext)或其他资源,除非资源的关闭模式已经改变(参见XSetCloseDownMode)。因此,这些窗口、资源id和其他资源不应该再被引用否则将生成错误。退出之前,您应该显式地调用XCloseDisplay,以便在XCloseDisplay执行最后的XSync操作时报告任何挂起的错误。

因此,:

  • 打开一次显示
  • 做你的事情(创建窗口,接收/处理事件等)
  • 结束时(最后一个窗口关闭):关闭显示(一次)

相关内容

  • 没有找到相关文章

最新更新