| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1725 人关注过本帖
标题:问个有关重叠窗口Z序问题
只看楼主 加入收藏
nzxhust
Rank: 2
等 级:论坛游民
威 望:1
帖 子:99
专家分:28
注 册:2008-2-14
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:5 
问个有关重叠窗口Z序问题
Z序还是有点不理解,上层是不是指垂直屏幕的外面啊?
我有两个窗口重叠放一起了,放得时候是2号窗口在1号上面,现在我有两个按钮想点击1号按钮显示1号窗口,2号按钮显示2号窗口。
当点击1号按钮时候
我用SetWindowPos设置1号窗口为TOPMOST顶层,点击2号按钮时候设置2号窗口为TOPMOST。
但结果是,显示的确没问题,但1号窗口虽然现实但对点击消息没反应且消息是传给2号的,这是怎么回事?是1号窗口要激活码?
希望能形象点解释下Z序感念和我上面出现的问题的原因谢谢!~~~~~~~~~~~~~~
搜索更多相关主题的帖子: 窗口 
2009-10-25 21:36
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:20 
   Z 序实际定义了窗口之间的层叠顺序。Z 序就是相对于一个假想的 Z 轴而言的,这个 Z 轴从屏幕外指向屏幕内。窗口在这个 Z 轴上的值,就确定了其 Z 序。Z 序值大的窗口,覆盖了 Z 序值小的窗口。

   
   顶端窗口是指这个窗口总是处于别的窗口的上方,即使他未处于激活状态。这样的窗口具有 WS_EX_TOPMOST 样式。
 
   激活窗口通常叫活动窗口,是指能接收消息的窗口,就是说,当你按下键盘上的键,或者移动了鼠标,或者点击了鼠标上的键,系统应该把这些事件通知哪一个窗口就是看哪一个窗口是活动窗口。  
   
   活动窗口和顶端窗口是两个不同的概念。所以你的一号窗口虽然本顶置,但没有获得输入焦点。所以它无法响应输入。

 
 
 
 

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-10-27 12:59
nzxhust
Rank: 2
等 级:论坛游民
威 望:1
帖 子:99
专家分:28
注 册:2008-2-14
收藏
得分:0 
实验了半天发现怎么也实现不了处于顶层的窗口且是激活状态,总是处于下层的是激活上层的未激活,不过用下面代码到能实现:
invoke    SetWindowPos,hListC_Port,hListC_Proc,0,\
           0,0,0,SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE
invoke    ShowWindow,hListC_Port,SW_HIDE
我发现吧窗口插在下面能获得激活状态,虽然不能显示不过可以影藏上面的来间接实现显示并激活.....
一鱼有什么方法实现置于顶层且处激活的说下3Q!   
2009-10-27 20:05
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
两种方式:

1、SetActiveWindow 这种方式就是直接指使windows把用户输入消息投递到该窗口线程的消息队列中。
2、AttachThreadInput 这种方式正好和上面的相反,不修改现有的窗口输入焦点。而是把自身的线程输入连接到具有焦点的窗口线程。
   (嘿嘿,比较适合干坏事的说。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-10-27 21:38
nzxhust
Rank: 2
等 级:论坛游民
威 望:1
帖 子:99
专家分:28
注 册:2008-2-14
收藏
得分:0 
invoke    SetWindowPos,hListC_Port,HWND_TOPMOST,0,\
                    0,0,0,SWP_NOSIZE or SWP_NOMOVE or SWP_NOACTIVATE
invoke    SetActiveWindow,hListC_Port
这个函数要怎么用呀?怎么我这样调用没有效果还是得不到消息啊.
2009-10-29 16:29
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
invoke    SetWindowPos,hListC_Port,HWND_TOPMOST,0,\  
                    0,0,0,SWP_NOSIZE or SWP_NOMOVE
invoke    SetActiveWindow,hListC_Port

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2009-10-29 18:10
快速回复:问个有关重叠窗口Z序问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024704 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved