窗口Z顺序

在A窗口初始化的时候设置:

::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,800,79,SWP_HIDEWINDOW);

情况一:

由其他程序调用

::SetForegroundWindow(hwnd);//hwnd为由窗口名字找到的A窗口句柄

::ShowWindow(hwnd,SW_SHOW);

窗口在最前面,调用::GetForegroundWindow() 返回的是A窗口的句柄。

 

情况二:

只调用

::ShowWindow(hwnd,SW_SHOW);  //A窗口也显示到最前面

再调用 ::GetForegroundWindow() 返回的不是A窗口的句柄,是A窗口显示之前看到的最前面的窗口,

 

A窗口非全屏窗口。

 

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

GetForegroundWindow()获取的窗口句柄是:

(1)刚刚执行的应用程序窗口的句柄。

(2)调用SetForegroundWindow()的窗口的句柄。

(3)当前使用的窗口。(活动窗口?)

注:GetForegroundWindow()获取的值不会受ShowWindow函数影响。

 

(A全屏窗口,B占局部屏幕)A没有TOPMOST属性。B有TOPMOST属性。

 

当前窗口是A,打开新程序,新程序主窗口是B。

B会显示在A的上面。GetForegroundWindow()获取B的窗口句柄。

调用ShowWindow隐藏B,显示A,GetForegroundWindow()获取的仍是B的窗口句柄。

点击A窗口,GetForegroundWindow()获取A窗口句柄。

调用ShowWindow显示B,GetForegroundWindow()获取的是A的窗口句柄。A窗口正常刷新

点击B,GetForegroundWindow()获取B窗口句柄。A窗口刷新停止。

 

如果屏幕看到的窗口是TOPMOST属性窗口,再打开没有TOPMOST属性窗口,

没有TOPMOST属性的窗口在下面,不会显示在前面。

 

 

ezhong的博客园:http://www.cnblogs.com/ezhong/

原文地址:https://www.cnblogs.com/ezhong/p/2181290.html