怎么让目标窗口最大化,这个简单的需求为什么这么难以实现

如何让目标窗口最大化,这个简单的需求为什么这么难以实现?

目标最小化的时候,我获取目标窗口句柄(我已经搞到了,所以句柄这个不回回帖) 最大化,且将目标窗口顶到桌面的最前面。  另外代码要可以反复使用, 即:目标最小化时候,点击程序,让目标最大化,如此反复使用。

这是我们的需求。


 注: 最小化和 点击目标窗口以外的区域让窗口消失在桌面上, 是2个不同的概念。 请不要混淆, 之所以特意提到这句话,是我发现 很多人提供的代码,只能针对 "点击目标窗口以外的区域让窗口消失在桌面上" 这种情况。


以下是一网友的解决方式:

::PostMessage(hwnd,WM_SYSCOMMAND,SC_MAXIMIZE,0);  //最大化
::SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); //hwnd_topmost非常重要
::SetForegroundWindow(hwnd);



这个做法,我试过了,只能针对  "点击目标窗口以外的区域让窗口消失在桌面上" 这种情况,即: 点击目标窗口以外的区域让窗口消失在桌面 这种方式管用.   根本无法针对目标窗口最小化的情况。




------解决方案--------------------
通过你这个测试, 我可以确定, 你的窗口句柄取得不对.

你使用spy++看看, 哪个才是真的主窗口. 句柄是多少, 直接使用spy++得到的句柄来设置, 应该就能生效.

HWND hWnd = (HWND)0xXXXXXX;//spy++中看到的句柄值.

再使用ShowWindow(hWnd,SW_HIDE);看是否能隐藏.