C++ 隐藏/显示所有窗口并恢复Z顺序

C++ 隐藏/显示所有窗口并恢复Z顺序,c++,windows,api,C++,Windows,Api,我正在开发一个应用程序,只需按下一个按钮就可以隐藏并显示桌面上的所有窗口。问题是,当我展示它们时,它们并不像我隐藏它们时那样以正确的顺序排列。有没有办法拿到Zorder并按正确的顺序展示?我正在使用Win7 64。我用这个来隐藏/显示: ShowWindow(hwnd, SW_HIDE); // hide ShowWindow(hwnd, SW_SHOWNA); // show 使用这些函数可以保持z顺序 SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOSIZ

我正在开发一个应用程序,只需按下一个按钮就可以隐藏并显示桌面上的所有窗口。问题是,当我展示它们时,它们并不像我隐藏它们时那样以正确的顺序排列。有没有办法拿到Zorder并按正确的顺序展示?我正在使用Win7 64。我用这个来隐藏/显示:

ShowWindow(hwnd, SW_HIDE);    // hide
ShowWindow(hwnd, SW_SHOWNA);  // show

使用这些函数可以保持z顺序

SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_HIDEWINDOW);
SetWindowPos(hwnd,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_SHOWWINDOW);

尽管更好的方法是最小化窗口(仅查找选项卡窗口)。您必须跟踪需要使用
SW\u MAXIMIZE
还原的窗口以及需要使用
SW\u RESTORE
还原的窗口。您可以使用
GetWindowPlacement
检查窗口的可见性。

我刚用前面的浏览器尝试过,但当我再次尝试时,发现一个完全不同的窗口。奇怪的是,我只是用我的应用程序再次尝试,它将正确的窗口放在了顶部。也许有时候确实有效。你认为在旗帜上添加SWP_NOREPOSION也会有帮助吗?我不太熟悉。这可能会有帮助。有什么问题吗?没有问题,我只是在查看旗帜列表时注意到了它,并认为把它放在那里不会有什么伤害,以防万一。我还想确保它不会把任何事情搞砸。描述如下:不更改所有者窗口在Z顺序中的位置。