5

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

替代文字

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

替代文字

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

4

2 回答 2

12

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

SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
于 2011-01-14T04:01:15.770 回答
0

使用 SetWindowPos() 的另一种方法;例如你有 HWND 句柄Wnd;

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

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

于 2015-04-16T04:59:02.527 回答