mfc 一个关于子窗口相互覆盖下的消息响应的问题
来源:互联网 发布:顺序循环队列c语言 编辑:程序博客网 时间:2024/06/05 08:06
首先我简要描述下问题:
一个父窗口拥有多个子窗口(都有WS_CHILD属性),这些子窗口都是动态创建出来的,
当他们有交叉时,我们操作在上面的子窗口,上面的子窗口却无法响应,反而是下面的窗口
响应了次消息。
如下图所示:
简要说明:红色为先创建的窗口,绿色为后创建的窗口
解决方案及步骤:
首先以为是窗口层次(即Z轴)的原因,于是通过调整窗口的层次,结果,还是没有解决问题。
其次 考虑到是窗口刷新的问题,发现也不是这样的。
于是网上搜索一些资料及查看MSDN,终于找到了一个有用的线索:
在创建子窗口时,会默认产生Z轴序列,且依次增大,
其绘制顺序就是Z轴的顺序(从小到大),
当他们(窗口或控件)叠加时,事件响应顺序相反(从大到小)。
知道了问题的根源,就可以对症下药了:
1)可以使用窗口属性中的CLIP_SIBLING,这个标志位可以组织兄弟窗口重叠区域重绘,这样可以使窗口显示和响应
相对应,但是显示结果却变为Z轴从大到小显示,有点违背了Windows的原则(显示的结果按照Z轴顺序从小到大绘制)。
应使用2)进行调整Z轴顺序,从而使显示顺序与Z轴顺序一致
2)使用SetWindowPos 设置窗口正确的Z轴顺序
0 0
- mfc 一个关于子窗口相互覆盖下的消息响应的问题
- [MFC] 无边框窗口的Resize拖动效果的实现(下):子窗口覆盖,导致主窗口热点区无法响应WM_NCHITTEST
- MFC 子窗口拦截父窗口消息响应简单的解决方法
- MFC窗口的消息响应顺序
- MFC窗口的消息响应顺序
- 关于MFC消息响应的一点注意事项
- MFC关于消息响应的宏代码
- MFC中父窗口和子窗口消息的传递
- 使控件子窗口的响应鼠标滚轮消息
- 使控件子窗口的响应鼠标滚轮消息
- 关于OnNcLButtonUp不能响应消息的问题
- 关于OnNcLButtonUp不能响应消息的问题
- MFC的消息响应机制
- mfc 关于不响应键盘消息的处理
- MFC下创建一个简单的窗口
- 关于WM_NOTIFY消息接收窗口的问题
- MFC关于消息的经典问题
- 关于MFC中 父窗口与子窗口 子窗口与子窗口之间的信息传递及控制
- 编写一个过程将查询的字段和where条件中的字符串值动态调用
- DeepLearning tutorial(2)机器学习算法在训练过程中保存参数
- ZeroMQ指南:第4章:可靠的请求-应答
- a different object with the same identifier value was already associated with the session异常解决办法
- 自定义android控件
- mfc 一个关于子窗口相互覆盖下的消息响应的问题
- NYOJ 633 弟弟的作业【字符串处理】
- Vmware+gdb调试Linux内核——工欲善其事,必先利其器
- 非接环境(PPSE)和接触环境(PSE)的FCI有什么区别
- String一些函数的用法
- maven jboss 插件配置
- uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结
- property-ref to unmapped class: com.xnjd.hynm.model.Polling
- Java: instanceOf vs getClass