问题
1 环境: Ubuntu 14.04
2 监听SubstructureNotifyMask事件获取窗口配置变更通知
3 在收到的ConfigureNotify中event.xconfigure.window窗口句柄不是实际发生事件的窗口句柄
原因
1 在我们的程序中创建顶层窗口时, Ubuntu的窗口管理器会在外面包装一个框架窗口
2 在ConfigureNotify中实际收到的窗口句柄是Ubuntu窗口管理器创建的框架窗口
解决方案
1 我们自己创建的顶层窗口会有WM_STATE属性, 窗口管理器创建的框架窗口无此属性
2 在ConfigureNotify中查找event.xconfigure.window的子窗口, 如果子窗口有WM_STATE属性, 则该窗口就是我们要找的窗口
备注
1 在Ubuntu 18.04中没有发现这个问题