SetWindowPos 不会改变最大化状态

DTI*_*att 3 .net c# pinvoke window

我们正在使用 SetWindowPos 来设置窗口的位置,并且效果很好。

我对它唯一的疑虑是,如果我们正在移动的窗口最大化,那么它会移动并变成合适的大小,但是,它仍然会认为自己处于最大化状态,并继续显示“恢复“ 按钮。

有没有办法在调用 SetWindowPos 后告诉该窗口替换最大化按钮?

另请注意:这些窗口不一定是 Windows 窗体窗口,也可能是资源管理器、Chrome、Firefox、记事本等应用程序。

这是我们对 SetWindowPos 的调用:

PInvokeMethods.SetWindowPos( hwnd, 0, position.Left + x, position.Top + y, position.Width, position.Height, PInvokeMethods.SWP_NoZOrder | PInvokeMethods.SWP_NoActivate);

Dav*_*nan 5

如果您想在一次调用中设置状态和位置,可以使用SetWindowPlacementAPI。

首先,您将调用GetWindowPlacementWINDOWPLACEMENT使用当前值填充结构。然后您将修改showCmdrcNormalPosition成员。然后你会在SetWindowPlacement.