SetWindowPos 设置窗口

设置窗口的位置、大小、Z序列。

Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
参数 意义 类型
hwnd 欲设置的窗口句柄  
hWindInsertAfter 窗口层次  
x X 坐标  
y Y 坐标  
cx 宽度  
cy 高度  
wFlags wFlags 标志  

hWindInsertAfter 窗口层次

常量 意义
另一个窗口句柄 将窗口置于其下层
Public Const HWND_TOP = 0 将窗口置于 Z 序的顶部
Public Const HWND_TOPMOST = -1 将窗口置顶
Public Const HWND_NOTOPMOST = -2 取消窗口置顶
Public Const HWND_BOTTOM = 1 将窗口置于 Z 序的底部

wFlags 标志

常量 意义
SWP_DRAWFRAME &H20 围绕窗口画一个框
SWP_HIDEWINDOW &H80 隐藏窗口
SWP_NOACTIVATE &H10 不激活窗口
SWP_NOMOVE 2 保持当前位置(x和y设定将被忽略)
SWP_NOREDRAW 8 窗口不自动重画
SWP_NOSIZE 1 保持当前大小(cx和cy会被忽略)
SWP_NOZORDER 4 保持窗口在列表的当前位置(hWndInsertAfter将被忽略)
SWP_SHOWWINDOW &H40 显示窗口
SWP_FRAMECHANGED &H20 强迫一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有改变

示例:窗口置顶(始终显示)

SetWindowPos Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE + SWP_NOMOVE