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

时间:2011-01-14 02:19:24

标签: windows winapi window maximize

我的程序需要随意最大化当前桌面上的任何窗口。我通过调用ShowWindow(hWnd, SW_MAXIMIZE)来实现这一点,其中hWnd是我想要最大化的窗口的HWND。执行该行代码时,相关窗口(此处为记事本)如下所示:

alt text

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

alt text

有谁知道为什么会出现这种情况,以及我可以采取哪些措施来解决这个问题?

2 个答案:

答案 0 :(得分:12)

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

SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);

答案 1 :(得分:0)

使用SetWindowPos()的Antoher方式;例如,你有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的顶部并显示