导航:  Classes > CWindow Class > IWindow Interface >

SetWindowPos (Method)

上一页返回章节概述下一页

描述

 

更改小孩,弹出窗口或顶级窗口的大小,位置和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???

保留当前位置(忽略XY参数)。

SWP_NOOWNERZORDER

&H0200???

不改变所有者窗口的Z位置。

SWP_NOREDRAW

&H0008???

不重绘更改。

SWP_NOREPOSITION

&H0200???

与SWP_NOOWNERZORDER标志相同。

SWP_NOSENDCHANGING

&H0400???

防止窗口收到WM_WINDOWPOSCHANGING消息。

SWP_NOSIZE

&H0001???

保留当前大小(忽略cxcy参数)。

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