如何使用XCB关闭按钮退出程序

8

在如何通过X按钮关闭应用程序方面,我找不到任何参考资料。我正在使用XCB编程,并希望通过“X”按钮关闭程序。我查看了相关文档,但是没有找到相关信息。我知道如何通过按按钮来关闭程序。另外,通过按“X”按钮,窗口似乎关闭了,但实际上并没有。

1个回答

17

我之前也曾经在这个主题上苦苦挣扎。

看一下http://marc.info/?l=freedesktop-xcb&m=129381953404497

关键是要把WM_DELETE_WINDOW的cookie存储在一个单独的cookie中...

xcb_intern_atom_cookie_t cookie2 = xcb_intern_atom(c, 0, 16, "WM_DELETE_WINDOW");
xcb_intern_atom_reply_t* reply2 = xcb_intern_atom_reply(c, cookie2, 0);

在事件循环中,将客户端消息与cookie2进行比较

case XCB_CLIENT_MESSAGE:
{
    if((*(xcb_client_message_event_t*)event).data.data32[0] == (*reply2).atom) ...
}

嗯,这可能会帮助其他人。;-) - max.haredoom
它确实帮助了其他人。SO是谷歌上的第一个搜索结果,尽管它会导致到一个无关的页面,因为蜘蛛发现问题在“相关”侧栏中。 - cardiff space man
嘿,太好了!我经常在这里找到好的解决方案。现在我可以说我也做出了一些贡献...;-) - max.haredoom
我可以建议您将完整的解决方案(包括五行原子和饼干以及属性替换)复制到您的答案中吗?这将有助于确保完整答案的可用性,而不受您链接到的邮件列表存档的可用性的影响。 - rubenvb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接