c++ - 当窗口在 xlib / xcb 中移动时如何获取窗口的位置
问题描述
在 Ubuntu 18.04 KDE 桌面上,当窗口移动时,我无法准确获得窗口的位置。
使用 xcb_get_geomerty() 函数,我可以获得窗口的位置。
但是当窗口移动时,窗口的位置还是和以前一样,没有变化。当释放鼠标并完成窗口移动时,我可以准确地获得窗口的位置。
auto geom = xcb_get_geometry(xcb_connection(), window);
auto offset = xcb_translate_coordinate(xcb_connection(), window, rootwin, geom->x, geom->y);
offset->dst_x // top-level window's x offset on the screen
offset->dst_y // top-level window's y offset on the screen
geom->width // top-level window's width
geom->height // top-level window's height
当窗口在其他桌面环境(即 gnome、xfce)但 KDE 中移动时,正确获取窗口的位置。移动时是否有任何其他方式或 xwindow 属性可以获取窗口的位置?
解决方案
推荐阅读
- python - 如何自动化读写文件?
- sql - SQLite 中列的部分索引
- git - 合并 git 分支,其中文件在一个分支上被删除,我不希望它们成为
- android - 内容 uri 在一段时间后变得无法访问
- java - AEM:工作流的行为方式因 DAM 路径而异
- vb.net - PDF填写未正确合并
- r - 在正在运行的 docker 容器上一一执行许多 R 命令
- fluent - 在流畅的蒸汽中创建父实体和子实体并重定向请求
- hyperledger-fabric - 在 Hyperledger Fabric 1.4.3 中运行 fabcar javascript 链代码时出错
- javascript - 重置嵌套的 Observable