【问题标题】:Problem when maximizing window in C++在 C++ 中最大化窗口时的问题
【发布时间】:2011-06-08 21:55:48
【问题描述】:
我的程序需要任意最大化当前桌面上的任何窗口。我通过调用ShowWindow(hWnd, SW_MAXIMIZE) 来实现这一点,其中hWnd 是我想要最大化的窗口的HWND。当那行代码执行时,有问题的窗口(这里是记事本)看起来像这样:
一切似乎都很好,除了窗口没有正确定位,即窗口似乎低了几个像素,并且标题栏看起来不像它应该的那样“压扁”。与单击最大化按钮时的外观相比,问题显而易见:
有谁知道为什么会发生这种行为,以及我可以做些什么来解决它?
【问题讨论】:
标签:
windows
winapi
window
maximize
【解决方案1】:
告诉窗口最大化自身可能会绕过程序在通过系统菜单命令最大化时所做的一些内部调整。要模拟单击最大化按钮,请发送SC_MAXIMIZE 命令:
SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
【解决方案2】:
另一种使用 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 的顶部并显示