描述
更改小孩,弹出窗口或顶级窗口的大小,位置和Z顺序。
PowerBasic 语法
METHOD SetWindowPos ( _ BYVAL hWnd AS DWORD, _ BYVAL hWndInsertAfter AS DWORD, _ BYVAL X AS LONG, _ BYVAL Y AS LONG, _ BYVAL cx AS LONG, _ BYVAL cy AS LONG, _ BYVAL uFlags AS DWORD, _ OPTIONAL BYVAL bNoScale AS LONG _ ) AS LONG |
参数
hWnd
[in]窗口的句柄。
hWndInsertAfter
[in]窗口的句柄在Z顺序的定位窗口之前。
Value |
Meaning |
HWND_BOTTOM 1??? |
将窗口放在Z顺序的底部。 |
HWND_NOTOPMOST &HFFFFFFFF??? |
将窗口放在所有非最顶层的窗口之上(即,在所有最上面的窗口之后)。 |
HWND_TOP 0??? |
将窗口放在Z顺序的顶部。 |
HWND_TOPMOST &HFFFFFFFE??? |
将窗口放在所有非最顶层的窗口之上。 |
有关如何使用此参数的更多信息,请参阅以下备注部分。
X
[in]窗口左侧的新位置,位于客户端坐标中。
Y
[in]窗口顶部的新位置,位于客户端坐标中。
cx
[in]窗口的新宽度,以像素为单位。
cy
[in]窗口的新高度,以像素为单位。
uFlags
[in]窗口大小和定位标志。
Value |
Meaning |
SWP_ASYNCWINDOWPOS &H4000??? |
如果调用线程和拥有该窗口的线程附加到不同的输入队列,则系统将该请求发布到拥有该窗口的线程。 |
SWP_DEFERERASE &H2000??? |
防止生成WM_SYNCPAINT消息。 |
SWP_DRAWFRAME &H0020??? |
在窗口周围绘制一个框架(在窗口的类描述中定义)。 |
SWP_FRAMECHANGED &H0020??? |
应用使用SetWindowLong功能设置的新框架样式。 |
SWP_HIDEWINDOW &H0080??? |
隐藏窗户 |
SWP_NOACTIVATE &H0010??? |
不激活窗口。 |
SWP_NOCOPYBITS &H0100??? |
舍弃客户区域的全部内容。 |
SWP_NOMOVE &H0002??? |
保留当前位置(忽略X和Y参数)。 |
SWP_NOOWNERZORDER &H0200??? |
不改变所有者窗口的Z位置。 |
SWP_NOREDRAW &H0008??? |
不重绘更改。 |
SWP_NOREPOSITION &H0200??? |
与SWP_NOOWNERZORDER标志相同。 |
SWP_NOSENDCHANGING &H0400??? |
防止窗口收到WM_WINDOWPOSCHANGING消息。 |
SWP_NOSIZE &H0001??? |
保留当前大小(忽略cx和cy参数)。 |
SWP_NOZORDER &H0004??? |
保留当前的Z顺序(忽略hWndInsertAfter参数)。 |
SWP_SHOWWINDOW &H0040??? |
显示窗口。 |
bNoScale
[in, opt]不要缩放窗口。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。
备注
作为Vista重新架构的一部分,所有服务都已从交互式桌面移动到Session 0。hwnd和窗口管理器操作仅在会话中有效,并且跨会话尝试操纵hwnd将失败。
如果您使用SetWindowLong更改了某些窗口数据,则必须调用SetWindowPos才能使更改生效。
可以通过将hWndInsertAfter参数设置为HWND_TOPMOST并确保未设置SWP_NOZORDER标志,或者通过以Z顺序设置窗口的位置,使其高于任何现有的最上面的窗口,可以将窗口设置为最上面的窗口。
如果既不指定SWP_NOACTIVATE也不指定SWP_NOZORDER标志(即当应用程序请求同时激活窗口并改变Z位置时),hWndInsertAfter中指定的值仅在以下情况下使用。
· | 在hWndInsertAfter中未指定HWND_TOPMOST或HWND_NOTOPMOST标志。 |
· | 由hWnd标识的窗口不是活动窗口。 |
应用程序无法激活非活动窗口,也不能将其移动到Z顺序的顶部。
如果最上面的窗口重新定位到Z顺序的底部(HWND_BOTTOM)或任何非最上面的窗口之后,它不再是最高的。
非最顶层的窗口可以拥有最上面的窗口,但不能发生相反的情况。
如果应用程序不在前台,并且应该在前台,则必须调用SetForegroundWindow功能。
要使用SetWindowPos将窗口置于顶部,拥有该窗口的进程必须具有SetForegroundWindow权限。
引用文件 #INCLUDE Once
CWindow.inc