VB 版 (精华区)
发信人: bloom (小石头长大了), 信区: VB
标 题: 控件与消息函数(1)
发信站: 哈工大紫丁香 (2000年07月23日12:26:47 星期天), 转信
目录
AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小
AnyPopup 判断屏幕上是否存在任何弹出式窗口
ArrangeIconicWindows 排列一个父窗口的最小化子窗口
AttachThreadInput 连接线程输入函数
BeginDeferWindowPos 启动构建一系列新窗口位置的过程
BringWindowToTop 将指定的窗口带至窗口列表顶部
CascadeWindows 以层叠方式排列窗口
ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄
ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标
CloseWindow 最小化指定的窗口
CopyRect 矩形内容复制
DeferWindowPos 该函数为特定的窗口指定一个新窗口位置
DestroyWindow 清除指定的窗口以及它的所有子窗口
DrawAnimatedRects 描绘一系列动态矩形
EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入
EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态
___________________________________________________
AdjustWindowRect,AdjustWindowRectEx
VB声明
Declare Function AdjustWindowRect Lib "user32" Alias "AdjustWindowRect" (lpR
ect As RECT, ByVal dwStyle As Long, ByVal bMenu As Long) As Long
Declare Function AdjustWindowRectEx Lib "user32" Alias "AdjustWindowRectEx"
(lpRect As RECT, ByVal dsStyle As Long, ByVal bMenu As Long, ByVal dwEsStyle
As Long) As Long
说明
在给定一种窗口样式的前提下,计算获得目标客户区矩形所需的窗口大小
返回值
Long,如执行成功,则返回非零值;如失败,返回零值。会设置GetLastError
参数表
参数 类型及说明
lpRect RECT,最初包含要求的客户区。由函数设为目标窗口矩形大小
dwStyle Long,窗口样式
bMenu Long,如窗口有菜单,则设为TRUE(非零)
dwEsStyle Long,扩展窗口样式(只适用于AdjustWindowRectEx)
注解
在调用本函数前,先用GetWindowLong取得一个窗体的样式。如菜单占用两行以上的空间
,则函数不能正确计算大小。如程序使用了多行标题,则应使用GetSystemMetrics
______________________________________________________________________________
AnyPopup
VB声明
Declare Function AnyPopup Lib "user32" Alias "AnyPopup" () As Long
说明
判断屏幕上是否存在任何弹出式窗口
返回值
Long,如存在弹出式菜单,则返回TRUE(非零)
注解
对该函数来说,弹出式菜单包含所有可见的包容顶级窗口,无论弹出式还是重叠窗口
_____________________________________________________________________________
ArrangeIconicWindows
VB声明
Declare Function ArrangeIconicWindows Lib "user32" Alias "ArrangeIconicWindo
ws" (ByVal hwnd As Long) As Long
说明
排列一个父窗口的最小化子窗口(在vb里使用:用于在桌面排列图标,用GetDesktopWi
ndow函数获得桌面窗口的一个句柄)
返回值
Long,图标行的高度;如失败,则返回零。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,父窗口的句柄
注解
也可将该函数用于包含了图标化子窗口的的定制控件
____________________________________________________________________________
AttachThreadInput
VB声明
Declare Function AttachThreadInput Lib "user32" Alias "AttachThreadInput" (B
yVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As L
ong
说明
通常,系统内的每个线程都有自己的输入队列。本函数(既“连接线程输入函数”)允
许线程和进程共享输入队列。连接了线程后,输入焦点、窗口激活、鼠标捕获、键盘状
态以及输入队列状态都会进入共享状态
返回值
Long,非零表示成功,零表示失败,会设置会GetLastError
参数表
参数 类型及说明
idAttach Long,欲连接线程的标识符(ID)
idAttachTo Long,与idAttach线程连接的另一个线程的标识符
fAttach Long,TRUE(非零)连接,FALSE撤消连接
注解
调用这个函数时,会重设键盘状态
____________________________________________________________________________
BeginDeferWindowPos
VB声明
Declare Function BeginDeferWindowPos Lib "user32" Alias "BeginDeferWindowPos
" (ByVal nNumWindows As Long) As Long
说明
启动构建一系列新窗口位置的过程(以便同时更新)。该函数会向一个内部结果返回一
个句柄,这个结构容纳了与窗口位置有关的信息。随后,该结构会由对DeferWindowPos
函数的调用填充。准备好更新所有窗口位置以后,对EndDeferWindowPos的一个调用可同
时更新结构内所有窗口的位置
返回值
Long,内部结构的句柄。零表示失败
参数表
参数 类型及说明
nNumWindows Long,在结构中欲为其分配空间的初始窗口数量。在每次DeferWindowPos
调用期间结构的大小会根据情况自动调节
Top
_____________________________________________________________________________
BringWindowToTop
VB声明
Declare Function BringWindowToTop Lib "user32" Alias "BringWindowToTop" (ByV
al hwnd As Long) As Long
说明
将指定的窗口带至窗口列表顶部。倘若它部分或全部隐藏于其他窗口下面,则将隐藏的
部分完全显示出来。该函数也对弹出式窗口、顶级窗口以及MDI子窗口产生作用
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,欲带至顶部的那个窗口的句柄
注解
这个函数也许能随同子窗口使用。函数对一个特定的输入线程来说是“本地的”——换
言之,倘若某窗口并非前台应用程序的一部分,那么一旦随同该窗口调用本函数,仍会
将窗口带至它自己那个应用程序的窗口列表顶部。但是,不会同时使那个应用成为前台
应用程序。这意味着在调用了本函数后,窗口仍会保持隐藏状态
___________________________________________________________________________
CascadeWindows,CascadeWindowsBynum
VB声明
Declare Function CascadeWindows% Lib "user32" (ByVal hwndParent As Long, ByV
al wHow As Long, lpRect As RECT, ByVal cKids As Long, lpKids As Long)
Declare Function CascadeWindowsBynum% Lib "user32" Alias "CascadeWindows" (B
yVal hwndParent As Long, ByVal wHow As Long, ByVal lpRect As Long, ByVal cKi
ds As Long, ByVal lpKids As Long)
说明
以层叠方式排列窗口(在vb里使用:位于顶部或被所有的窗口没有问题。原文:No pro
blem for top level windows or owned windows.)
返回值
Integer,排列成功的窗口数量,零表示失败
参数表
参数 类型及说明
hwndParent Long,指定一个父窗口;准备对它的子窗口进行排列。用GetDesktopWindo
w函数获得顶级窗口的句柄
wHow Long,MDITILE_SKIPDISABLED——不排列已被禁用的MDI子窗口
lpRect RECT,指定一个矩形,矩形区域中的窗口才会层叠处理。可设为NULL,表示使用
整个客户区
cKids Long,在lpKids数组中指定的子窗口数量
lpKids Long,子窗口列表中准备排列的第一个元素。如传递NULL(注意将参数定义成B
yVal)。Long,则表示排列所有的子窗口(原文:Long--First element in list of c
hild windows to arrange. Pass NULL (be sure to define parameter as ByVal - L
ong, to arrange all child windows.)
注解
在正式的win32文档里,对这个函数的说明是不正确的。这儿的参数建立在实际的win32
C 头文件基础上。函数不能对诸如控件的子窗口产生——只对顶级窗口及MDI子有用。
注意在MDI窗体的情况下,指定的父窗口应是MDIClient窗口的句柄,不应是MDI窗体本身
的窗口句柄。可用api函数GetParent获得正确的句柄
_____________________________________________________________________________
ChildWindowFromPoint,ChildWindowFromPointEx
VB声明
Declare Function ChildWindowFromPoint Lib "user32" Alias "ChildWindowFromPoi
nt" (ByVal hWnd As Long, ByVal xPoint As Long, ByVal yPoint As Long) As Long
Declare Function ChildWindowFromPointEx Lib "user32" Alias "ChildWindowFromP
ointEx" (ByVal hWnd As Long, ByVal pt As POINTAPI, ByVal un As Long) As Long
说明
返回父窗口中包含了指定点的第一个子窗口的句柄
返回值
Long,发现包含了指定点的第一个子窗口的句柄。如未发现任何窗口,则返回hWnd(父
窗口的句柄)。如指定点位于父窗口外部,则返回零
参数表
参数 类型及说明
hWnd Long,父窗口的句柄
xPoint Long,点的X坐标,以像素为单位
yPoint Long,点的Y坐标,以像素为单位
pt POINTAPI,点的坐标,以像素为单位
un Long,(只适用于ChildWindowFromPointEx)控制对窗口的搜索。参见下表
CWP_ALL 测试所有窗口
CWP_SKIPINVISIBLE 忽略不可见窗口
CWP_SKIPDISABLED 忽略已屏蔽的窗口
CWP_SKIPTRANSPARENT 忽略透明窗口
_________________________________________________________________________
ClientToScreen
VB声明
Declare Function ClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal h
wnd As Long, lpPoint As POINTAPI) As Long
说明
判断窗口内以客户区坐标表示的一个点的屏幕坐标
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hwnd Long,判断客户区坐标时那个窗口的句柄
lpPoint POINTAPI,用hwnd窗口的客户区坐标表示的点,这个参数会包含屏幕坐标系统
中相同的点
Top
_______________________________________________________________________--
CloseWindow
VB声明
Declare Function CloseWindow Lib "user32" Alias "CloseWindow" (ByVal hwnd As
Long) As Long
说明
最小化指定的窗口。窗口不会从内存中清除
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,欲最小化的那个窗口的句柄
______________________________________________________________________________
CopyRect
VB声明
Declare Function CopyRect Lib "user32" Alias "CopyRect" (lpDestRect As RECT,
lpSourceRect As RECT) As Long
说明
将矩形的lpSourceRect内容复制给矩形lpDestRect
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpDestRect RECT,目标矩形结构
lpSourceRect RECT,源矩形
_____________________________________________________________________________
DeferWindowPos
VB声明
Declare Function DeferWindowPos Lib "user32" Alias "DeferWindowPos" (ByVal h
WinPosInfo As Long, 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 wFlag
s As Long) As Long
说明
该函数为特定的窗口指定一个新窗口位置,并将其输入由BeginDeferWindowPos创建的结
构,以便在EndDeferWindowPos函数执行期间更新
返回值
Long,返回一个新句柄,它指向的结构包含了位置更新信息。这个句柄应在对DeferWin
dowPos的后续调用以及对EndDeferWindowPos的结束调用中用到。如出错,则返回零值
参数表
参数 类型及说明
hWinPosInfo Long,由BeginDeferWindowPos为后续对DeferWindowPos的调用返回的句柄
hwnd Long,欲定位的窗口
hWndInsertAfter Long,窗口句柄。在窗口列表中,窗口hwnd会排列于这个窗口后面。
也可用下述值之一:
HWND_BOTTOM 将窗口置于窗口列表底部
HWND_TOP 将窗口置于Z序列顶部;Z序列是窗口针对分级结构中一个给定级别显示的顺序
HWND_TOPMOST 将窗口置于列表顶部,位于任何最顶级窗口的前面(请参考WS_EX_TOPMO
ST样式位)
HWND_NOTOPMOST 将窗口置于列表顶部,位于任何最顶级窗口的后面
x Long,窗口新的x坐标。如hwnd是个子窗口,那么x用父窗口的客户区坐标表示
y Long,窗口新的y坐标。如hwnd是个子窗口,那么y用父窗口的客户区坐标表示
cx Long,指定新窗口宽度
cy Long,指定新窗口高度
wFlags Long,包含了旗标的一个整数,如下所示:
SWP_DRAWFRAME 围绕窗口画一个框
SWP_HIDEWINDOW 隐藏窗口
SWP_NOACTIVATE 不激活窗口
SWP_NOMOVE 保持当前位置(x和y设定将被忽略)
SWP_NOREDRAW 窗口不自动重画
SWP_NOSIZE 保持当前大小(cx和cy会被忽略)
SWP_NOZORDER 保持在窗口列表的当前位置(hWndInsertAfter会被忽略)
SWP_SHOWWINDOW 显示窗口
SWP_NOOWNERZORDER 不改变Z序列的所有者
SWP_NOSENDCHANGING 窗口不发出WM_WINDOWPOSCHANGING消息
注解
请参考对SetWindowPos函数的注解。同时参考BeginDeferWindowPos和EndDeferWindowPos
_____________________________________________________________________________
DestroyWindow
VB声明
Declare Function DestroyWindow Lib "user32" Alias "DestroyWindow" (ByVal hwn
d As Long) As Long
说明
破坏(即清除)指定的窗口以及它的所有子窗口(在vb里使用:用处不大。原文:it i
s unlikely to be of much use.)
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,欲清除的窗口的句柄
___________________________________________________________________________
DrawAnimatedRects
VB声明
Declare Function DrawAnimatedRects Lib "user32" Alias "DrawAnimatedRects" (B
yVal hwnd As Long, ByVal idAni As Long, lprcFrom As Rect, lprcTo As Rect) As
Long
说明
在lprcFrom和lprcTo之间描绘一系列动态矩形
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hwnd Long,要在其中描绘矩形的窗口。如设为零,表示以桌面为背景
idAni Long,windows 95要设为0
lprcFrom Rect,原始矩形
lprcTo Rect,目标矩形
注解
我的理解——这个函数用于在窗口缩放时产生动画效果
_________________________________________________________________________
EnableWindow
VB声明
Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd
As Long, ByVal fEnable As Long) As Long
说明
在指定的窗口里允许或禁止所有鼠标及键盘输入(在vb里使用:在vb窗体和控件中使用
Enabled属性)
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,窗口句柄
fEnable Long,非零允许窗口,零禁止
Top
________________________________________________________
EndDeferWindowPos
VB声明
Declare Function EndDeferWindowPos Lib "user32" Alias "EndDeferWindowPos" (B
yVal hWinPosInfo As Long) As Long
说明
同时更新DeferWindowPos调用时指定的所有窗口的位置及状态
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hWinPosInfo Long,由对DeferWindowPos最近一次调用返回的结构句柄
又臭,又硬。
小石头
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.233.140]
--
※ 修改:·bloom 於 07月23日12:54:25 修改本文·[FROM: 202.118.233.140]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:204.616毫秒