XLib:'Soft-Closing'一个window
XLib: 'Soft-Closing' a window
我知道,我可以 'close' X11 Window 通过调用:
XDestroyWindow(display, id);
问题是,这会立即破坏 window。另一方面,如果我单击关闭按钮(标题栏中的 x),应用程序可以显示类似 "Do you really want to exit?".
的内容
那么我该如何模拟这种类型的 window 关闭呢?
背景:
我要从其他应用程序而不是我自己的应用程序关闭 windows
可以和
whosebug.com/questions/1157364/intercept-wm-delete-window-on-x11
我找到了解决方案:
XEvent event;
event.xclient.type = ClientMessage;
event.xclient.window = id;
event.xclient.message_type = XInternAtom(d, "WM_PROTOCOLS", TRUE);
event.xclient.format = 32;
event.xclient.data.l[0] = XInternAtom(d, "WM_DELETE_WINDOW", FALSE);
event.xclient.data.l[1] = CurrentTime;
XSendEvent(d, id, False, NoEventMask, &event);
其中 d
是显示句柄,id
是 window ID。
信用:https://john.nachtimwald.com/2009/11/08/sending-wm_delete_window-client-messages/
我知道,我可以 'close' X11 Window 通过调用:
XDestroyWindow(display, id);
问题是,这会立即破坏 window。另一方面,如果我单击关闭按钮(标题栏中的 x),应用程序可以显示类似 "Do you really want to exit?".
的内容那么我该如何模拟这种类型的 window 关闭呢?
背景: 我要从其他应用程序而不是我自己的应用程序关闭 windows
可以和 whosebug.com/questions/1157364/intercept-wm-delete-window-on-x11
我找到了解决方案:
XEvent event;
event.xclient.type = ClientMessage;
event.xclient.window = id;
event.xclient.message_type = XInternAtom(d, "WM_PROTOCOLS", TRUE);
event.xclient.format = 32;
event.xclient.data.l[0] = XInternAtom(d, "WM_DELETE_WINDOW", FALSE);
event.xclient.data.l[1] = CurrentTime;
XSendEvent(d, id, False, NoEventMask, &event);
其中 d
是显示句柄,id
是 window ID。