我们正在使用SetWindowPos,设置窗口的位置并且效果很好。
我对它的唯一质疑是,如果我们移动的窗口最大化,那么它将移动并变为合适的大小,但是,它仍将相信自己处于最大化状态,并继续显示“恢复”按钮。
一旦调用了SetWindowPos,是否有办法告诉该窗口替换最大化按钮?
另请注意:这些窗口不一定是Windows窗体,但可能是Explorer,Chrome,Firefox,Notepad等应用程序。
这是我们对SetWindowPos的调用:
PInvokeMethods.SetWindowPos(
hwnd, 0,
position.Left + x, position.Top + y, position.Width, position.Height,
PInvokeMethods.SWP_NoZOrder | PInvokeMethods.SWP_NoActivate);
答案 0 :(得分:4)
如果您想在一次通话中设置状态和排名,则可以使用SetWindowPlacement
API。
首先,您可以调用GetWindowPlacement
来填充当前值的WINDOWPLACEMENT
结构。然后,您将修改showCmd
和rcNormalPosition
成员。然后,您将在SetWindowPlacement
处重新启动已修改的结构。
答案 1 :(得分:3)
在尝试更改位置之前,您可以尝试使用SW_SHOWNORMAL
致电ShowWindow
。
答案 2 :(得分:0)
SetWindowPos不会更改窗口状态(仅限其位置)。
请改用SetWindowPlacement,并在SHOWCmd成员设置为SW_SHOWMAXIMIZED的情况下完成WindowPlacement结构(http://msdn.microsoft.com/en-us/library/windows/desktop/ms632611(v=vs.85).aspx)