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

发布于 2024-10-11 22:55:21 字数 385 浏览 7 评论 0原文

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

alt text

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

alt text

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

My program needs to arbitrarily maximize any window on the current desktop. I achieve this by calling ShowWindow(hWnd, SW_MAXIMIZE), where hWnd is the HWND of the window I want to maximize. When that line of code executes, the window in question (here, Notepad) looks like this:

alt text

Everything seems fine, except for the fact that the window has not been positioned correctly, i.e. the window seems to be a few pixels to low, and the title bar does not look "squashed" like it should. Compared to how it should look when the maximize button is clicked, the problem is clearly visible:

alt text

Does anyone know why this behaviour occurs, and what I can do to fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泅渡 2024-10-18 22:55:21

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

SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);

Telling the window to maximize itself might bypass some internal adjustments that the program makes when it maximizes via a system menu command. To emulate clicking on the maximize button, send it a SC_MAXIMIZE command:

SendMessage(hwnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
岁月流歌 2024-10-18 22:55:21

使用 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 之上并显示

Antoher way to use SetWindowPos(); For example you got 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);

So you got your previous position, place window on top of Z and show

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文