3

我们很好地使用了 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);

4

3 回答 3

5

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

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

于 2013-01-10T16:51:04.357 回答
3

也许你可以在尝试改变位置之前尝试调用ShowWindowwith 。SW_SHOWNORMAL

于 2013-01-10T16:05:02.463 回答
0

SetWindowPos 不改变窗口状态(只改变它的位置)。

请改用 SetWindowPlacement,并在 SHowCmd 成员设置为 SW_SHOWMAXIMIZED 的情况下完成 WindowPlacement 结构 ( http://msdn.microsoft.com/en-us/library/windows/desktop/ms632611(v=vs.85).aspx )

于 2013-01-10T20:41:55.970 回答