XLib:' Soft-Closing'一个窗口

时间:2016-12-17 20:13:17

标签: c window xlib

我知道,我可以关闭'一个X11窗口,通过调用:

XDestroyWindow(display, id);

问题是,这会立即破坏窗口。另一方面,如果我点击关闭按钮(标题栏中的x),应用程序可以显示类似"你真的要退出吗?"。

那么如何模拟这种类型的窗口关闭?

背景: 我正在关闭来自其他应用程序的窗口,而不是我自己的

2 个答案:

答案 0 :(得分:2)

我找到了解决方案:

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是窗口ID。

CREDIT:https://john.nachtimwald.com/2009/11/08/sending-wm_delete_window-client-messages/

答案 1 :(得分:1)

它可以是相同的 http://codepen.io/bmodena/pen/Fybdu