MFC窗口显示的Z序问题

来源:互联网 发布:南风知我意2免费阅读 编辑:程序博客网 时间:2024/05/16 06:54



之前遇到了一个窗口显示顺序的问题,发表了这么一个帖子:
http://bbs.csdn.net/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),所以出现了之前的那个问题。
解决办法很简单,窗口风格中去除就好了,如果一定要使用这个风格的话,可以考虑其他方式将窗口显示回来。
欢迎网友们一起探讨。

0 0
原创粉丝点击