该SetWindowPos函数接受以下标志:
SWP_NOOWNERZORDER (0x0200)
不改变所有者窗口在 Z 顺序中的位置。
什么确实的SetWindowPos功能做主人窗口在Z顺序中的位置,如果不通过这个标志?
如果不传递此标志,SetWindowPos 函数对 Z 顺序中所有者窗口的位置有何作用?
以将拥有的窗口放置在 Z 顺序的底部为例。共有三个窗口:Owned、TestWindowPos(所有者)和 New Tab Chrome 窗口(作为参考)。
测试代码段:
HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
HWND hWndOwned = CreateWindowW(szWindowClass, L"Owned", WS_OVERLAPPEDWINDOW,
0, 0, 500, 500, hWnd, nullptr, hInstance, nullptr);
ShowWindow(hWndOwned, nCmdShow);
UpdateWindow(hWndOwned);
SetWindowPos(hWndOwned, HWND_BOTTOM, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER);
Run Code Online (Sandbox Code Playgroud)
当SWP_NOOWNERZORDER标志设置,你可以从下面的快照中看到的是,它把所有的窗口在底部,但让车主时刻不变。
当SWP_NOOWNERZORDER标志未设置时,您可以从以下快照中看到它更改了拥有窗口的 z-order 以及所有者窗口的.