MFC窗口显示的Z序问题



之前遇到了一个窗口显示顺序的问题,发表了这么一个帖子:
http://bbs.youkuaiyun.com/topics/391839703
问题大概描述是这样的:
多个窗口重叠在一起,自己的一个程序的主窗口在桌面窗口的第二层位置时,点击第一层窗口最小化,该程序即会显示在原状态下第三层窗口的后一层位置,即永远都变成界面上第二层窗口
首先先感谢网友们的热心回答,但是这个问题,我做了很多方案去解决,SetWindowPos(),以及MoveWindow全都尝试过,都没办法完美的解决这一项问题。
如果有其他网友也出现过类似的情况的时候,估计你的情况跟我一样了,后来查了很多的资料,才发现一个窗口风格的问题:WS_EX_TOOLWINDOW
WS_EX_TOOLWINDOW,带有这个属性的窗口有以下特点:
1. 不在任务栏显示。
2. 不显示在Alt+Tab的切换列表中。
3. 在任务管理器的窗口管理Tab中不显示。


我的这个问题真是因为这个风格影响的,当你最小化一个窗口以后,系统将激活 Z-order中的下一个最顶级的窗口。而你的A窗口(WS_EX_TOOLWINDOW风格)不会统计在当前进程所有的z-order窗口中。
正因为这个原因,该风格的窗口无法接收到消息(WM_ACTIVATE),所以出现了之前的那个问题。
解决办法很简单,窗口风格中去除就好了,如果一定要使用这个风格的话,可以考虑其他方式将窗口显示回来。
欢迎网友们一起探讨。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值