DeferWindowPos和SWP_SHOWWINDOW / SWP_HIDEWINDOW

我正在编写一个使用DeferWindowPos API函数的虚拟桌面应用程序。我正在使用的当前方法是将窗口移出屏幕,如果它们不在当前的虚拟桌面上。但是我知道也希望隐藏屏幕外的窗口,这样它们就不会出现在任务栏上。我也尝试过将SWP_SHOWWINDOW / SWP_HIDEWINDOW传递给DeferWindowPos()调用。我已经阅读了一些关于此的网站,其中一个建议如果传递了SWP_SHOWWINDOW / SWP_HIDEWINDOW,那么窗口将只显示或隐藏,并且没有重新定位。任何人都可以证实这一点,或者我做错了什么?     
已邀请:
除了rtfm之外,DeferWindowPos最终将调用SetWindowPos。 SetWindowPos总是通过
WM_WINDOWPOSCHANGING
将它们传递给WindowProc来验证它的参数,所以,除非你把每个窗口WindowProc挂钩作为你的虚拟桌面管理器的一部分,否则将它们移出屏幕对于开发人员做某事的任何窗口都会失败“ “或者不寻常 - 就像夹在工作区边缘一样。     
您需要阅读明确说明的文档   如果多窗口位置结构中的任何窗口设置了SWP_HIDEWINDOW或SWP_SHOWWINDOW标志,则不会重新定位任何窗口。     
我也在文档中注意到这句话:   如果多窗口位置结构中的任何窗口设置了SWP_HIDEWINDOW或SWP_SHOWWINDOW标志,则不会重新定位任何窗口。 ...在我已经重写了一些使用DWP的代码之后,所以我想我会尝试运行它。尽管我每次调用DWP都使用了SWP_SHOWWINDOW或SWP_HIDEWINDOW,但它工作正常。 这是在Windows 7 64位,所以YMMV。     

要回复问题请先登录注册