在C ++中最大化窗口时的问题

我的程序需要随意最大化当前桌面上的任何窗口。 我通过调用ShowWindow(hWnd, SW_MAXIMIZE)实现了这一点,其中hWnd是我想要最大化窗口的HWND 。 当这行代码执行时,有问题的窗口(这里是记事本)看起来像这样:

替代文字

一切似乎都很好,除了窗口没有被正确定位的事实,即窗口似乎是几个像素到低,标题栏并不像看起来那样被“压扁”。 与点击最大化button时的外观相比,问题清晰可见:

替代文字

有谁知道为什么会发生这种行为,我能做些什么来解决它?

告诉窗口最大化本身可能会绕过程序通过系统菜单命令最大化时所做的一些内部调整。 要模拟点击最大化按钮,发送一个SC_MAXIMIZE命令:

 SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0); 

Antoher的方式来使用SetWindowPos(); 例如,你有HWND handleWnd;

 RECT rcWnd; GetWindowRect(handleWnd,&rcWnd); SetWindowPos(handleWnd,WHND_TOP,rcWnd.left,rcWnd.top,(rcWnd.right-rcWnd.left),(rcWnd.bottom-rcWnd.top),SWP_SHOWWINDOW); 

所以你得到了你以前的位置,把窗口放在Z顶部,并显示