终于搞清楚SetWindowPos的hWndInsertAfter参数的作用
函数声明:
BOOL WINAPI SetWindowPos(
_In_ HWND hWnd,
_In_opt_ HWND hWndInsertAfter,
_In_ int X,
_In_ int Y,
_In_ int cx,
_In_ int cy,
_In_ UINT uFlags
);
参数解释:
hWndInsertAfter,[输入]:
存放要将hWnd参数指定的窗口定位在哪个窗口句柄的前面,不能为NULL,也可以为(选一至一个):
HWND_BOTTOM(1):
如果hWnd参数指定的窗口是当前活动窗口,将此窗口定位在Z轴顺序的底部,也就是所有窗口的后面,且如果此窗口是置顶窗口,就变成非置顶窗口。
如果hWnd参数指定的窗口不是当前活动窗口,则不做任何定位,无论此窗口是置顶窗口,还是非置顶窗口。
HWND_NOTOPMOST(-2):
如果hWnd参数指定的窗口是置顶窗口,且是当前活动窗口,就变成非置顶窗口,并定位在所有非置顶窗口的前面,及在所有置顶窗口的后面。
如果hWnd参数指定的窗口已经是一个非置顶窗口,或不是当前活动窗口,则不做任何定位。
HWND_TOP(0):
如果hWnd参数指定的窗口是非置顶窗口,且是当前活动窗口,将窗口定位在所有非置顶窗口的前面,及在所有置顶窗口的后面。
如果hWnd参数指定的窗口已经是一个置顶窗口,或不是当前活动窗口,则不做任何定位。
HWND_TOPMOST(-1):
将hWnd参数指定的窗口定位在所有非置顶窗口和置顶窗口的前面,并将窗口变成置顶窗口,无论此窗口是不是当前活动窗口。
如果hWnd参数指定的窗口在置顶后,又有其他窗口被置顶,则此窗口将被定位在其他置顶窗口的后面。
如果要一直保持某个窗口的置顶位置,需要每隔一段时间就设置一次置顶,才能保证不被其他窗口盖住。
注意:如果uFlags参数中设置了SWP_NOZORDER标记则本参数将被忽略。