VB 版 (精华区)

发信人: bloom (小石头长大了), 信区: VB
标  题: 控件与消息函数(5)
发信站: 哈工大紫丁香 (2000年07月23日13:03:48 星期天), 站内信件

                  目录
ScreenToClient 判断屏幕上一个指定点的客户区坐标
ScrollWindow 滚动窗口客户区的全部或一部分
ScrollWindowEx 根据附加的选项,滚动窗口客户区的全部或部分
SetActiveWindow 激活指定的窗口
SetCapture 将鼠标捕获设置到指定的窗口
SetClassLong 为窗口类设置一个Long变量条目
SetClassWord 为窗口类设置一个条目
SetFocusAPI 将输入焦点设到指定的窗口。如有必要,会激活窗口
SetForegroundWindow 将窗口设为系统的前台窗口
SetParent 指定一个窗口的新父
SetRect 设置指定矩形的内容
SetRectEmpty 将矩形设为一个空矩形
SetWindowContextHelpId 为指定的窗口设置帮助场景(上下文)ID
SetWindowLong 在窗口结构中为指定的窗口设置信息
SetWindowPlacement 设置窗口状态和位置信息
SetWindowPos 为窗口指定一个新位置和状态
_______________________________________________
ScreenToClient
VB声明
Declare Function ScreenToClient Lib "user32" Alias "ScreenToClient" (ByVal h
wnd As Long, lpPoint As POINTAPI) As Long
说明
判断屏幕上一个指定点的客户区坐标
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hwnd Long,一个窗口的句柄,该窗口定义了要使用的客户区坐标系统
lpPoint POINTAPI,屏幕坐标系统中包含了屏幕点的结构。这个函数会随同相应的客户
区坐标(由hwnd决定)载入结构
____________________________________________________________________

ScrollWindow
VB声明
Declare Function ScrollWindow Lib "user32" Alias "ScrollWindow" (ByVal hWnd 
As Long, ByVal XAmount As Long, ByVal YAmount As Long, lpRect As RECT, lpCli
pRect As RECT) As Long
说明
滚动窗口客户区的全部或一部分
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hWnd Long,待滚动窗口的句柄
XAmount Long,水平滚动的距离。正值向右滚动,负值向左滚动
YAmount Long,垂直滚动的距离。正值向下滚动,负值向上滚动
lpRect RECT,用客户区坐标表示的一个矩形,它定义了客户区要滚动的一个部分。如设
为NULL,则滚动整个客户区。在NULL的情况下,子窗口和控件的位置也会随同任何无效
区域移动。否则,子窗口和无效区域不会一起移动。因此,在滚动之前,如指定了lpRe
ct,一个明智的做法是先调用UpdateWindow函数
lpClipRect RECT,指定剪切区域。只有这个矩形的区域才可能滚动。该矩形优先于lpR
ect。可设为NULL
______________________________________________________________
ScrollWindowEx
VB声明
Declare Function ScrollWindowEx Lib "user32" Alias "ScrollWindowEx" (ByVal h
wnd As Long, ByVal dx As Long, ByVal dy As Long, lprcScroll As RECT, lprcCli
p As RECT, ByVal hrgnUpdate As Long, lprcUpdate As RECT, ByVal fuScroll As L
ong) As Long
说明
根据附加的选项,滚动窗口客户区的全部或部分
返回值
Long,常数值SIMPLEREGION,COMPLEXREGION,或NULLREGION,它们描述了无效区域的类

参数表
参数 类型及说明
hwnd Long,欲滚动的窗口的句柄
dx Long,水平滚动的距离。正值向右滚动,负值向左滚动
dy Long,垂直滚动的距离。正值向下滚动,负值向上滚动
lprcScroll RECT,用客户区坐标表示的一个矩形,它定义了客户区要滚动的一个部分。
如设为零,则滚动整个客户区
lprcClip RECT,指定一个剪切矩形。只有这个矩形的内容才可能滚动。该矩形优先于l
pRect。可能为零,表示不进行剪切处理(原文:Clipping rectangle. Only the area
 within this rectangle may be scrolled. This rectangle takes priority over l
pRect. May be zero, in which case no clipping takes place.)
hrgnUpdate Long,滚动过程中随同无效区域载入的一个“区”。可能是零
lprcUpdate RECT,随同一个矩形载入的矩形结构,该矩形定义了滚动过程中无效的区域
。可能是零
fuScroll Long,对滚动进行控制的旗标。可以是下述任何常数的组合
SW_ERASE 清除新无效区域的背景
SW_INVALDATE 使滚动时未覆盖的区域无效
SW_SCROLLCHILDREN 滚动区域内的子窗口进行等量移动。为避免得到无效的结果,在使
用这个函数的时候,请确定子窗口或控件要么完全在滚动区域中,要么完全在滚动区域

Top
_____________________________________________________________
SetActiveWindow
VB声明
Declare Function SetActiveWindow Lib "user32" Alias "SetActiveWindow" (ByVal
 hwnd As Long) As Long
说明
激活指定的窗口
返回值
Long,前一个活动窗口的句柄
参数表
参数 类型及说明
hwnd Long,待激活窗口的句柄
注解
在vb里使用这个函数要小心,它不会改变输入焦点,所以焦点可能设向一个不活动窗口
,最好换用SetFocusAPI函数来激活窗口。如指定的窗口不从属于当前输入线程,则没有
任何效果
__________________________________________________________________
SetCapture
VB声明
Declare Function SetCapture Lib "user32" Alias "SetCapture" (ByVal hwnd As L
ong) As Long
说明
将鼠标捕获设置到指定的窗口。在鼠标按钮按下的时候,这个窗口会为当前应用程序或
整个系统接收所有鼠标输入
返回值
Long,之前拥有鼠标捕获的窗口的句柄
参数表
参数 类型及说明
hwnd Long,要接收所有鼠标输入的窗口的句柄
注解
我的理解:与ReleaseCapture函数一起使用,用于判断鼠标离开(mouseleave)事件
________________________________________________________________
SetClassLong
VB声明
Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd
 As Long, ByVal nIndex As Long, ByVal dwNewLong As ) As Long
说明
为窗口类设置一个Long变量条目
返回值
Long,由nIndex指定的的类信息的前一个值。零表示出错。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,欲为其设置类信息的那个窗口的句柄
nIndex Long,参考GetClassLong函数的nIndex参数说明
dwNewLong Long,类信息的新值,具体取决于nIndex
注解
使用这个函数一定要小心。记住,这里的变动会影响指定类的所有窗口,但除非窗口重
画,否则那个变动不会显露出来
____________________________________________
SetClassWord
VB声明
Declare Function SetClassWord Lib "user32" Alias "SetClassWord" (ByVal hwnd 
As Long, ByVal nIndex As Long, ByVal wNewWord As Long) As Long
说明
为窗口类设置一个条目
返回值
Long,由nIndex指定的类信息的前一个值。零表示出错。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,欲为其获得类信息的那个窗口的句柄
nIndex Long,信息结构已分配额外空间的正偏移量
wNewWord Long,由nIndex指定的类信息的新值
注解
使用这个函数一定要小心。记住,这里的变动会影响指定类的所有窗口,但除非窗口重
画,否则那个变动不会显露出来
______________________________________________
SetFocusAPI
VB声明
Declare Function SetFocusAPI& Lib "user32" Alias "SetFocus" (ByVal hwnd As L
ong)
说明
将输入焦点设到指定的窗口。如有必要,会激活窗口
返回值
Long,前一个拥有焦点的窗口的句柄
参数表
参数 类型及说明
hwnd Long,准备接收焦点的窗口的句柄
注解
在vb里对窗体和控件最好使用SetFocus方法。如指定的窗口不属于当前输入线程,则该
函数是没有效果的。它用SetFocusAPI这个别名避免与vb的SetFocus方法发生冲突
____________________________________________________
SetForegroundWindow
VB声明
Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow
" (ByVal hwnd As Long) As Long
说明
将窗口设为系统的前台窗口。这个函数可用于改变用户目前正在操作的应用程序
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,带到前台的窗口
注解
不应随便使用它,因为一旦程序突然从后台进入前台,可能会使用户产生迷惑
_________________________________________________________________
SetParent
VB声明
Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild A
s Long, ByVal hWndNewParent As Long) As Long
说明
指定一个窗口的新父(在vb里使用:利用这个函数,vb可以多种形式支持子窗口。例如
,可将控件从一个容器移至窗体中的另一个。用这个函数在窗体间移动控件是相当冒险
的,但却不失为一个有效的办法。如真的这样做,请在关闭任何一个窗体之前,注意用
SetParent将控件的父设回原来的那个)
返回值
Long,前一个父窗口的句柄
参数表
参数 类型及说明
hWndChild Long,子窗口的句柄
hWndNewParent Long,hWndChild的新父
注解
可用这个函数在运行期将vb控件置入容器控件内部(比如将一个按钮设成图象或窗体控
件的子窗口),或者将控件从一个容器控件移至另一个。控件移至另一个父后,它的位
置将由新父的坐标系统决定。这样一来,有必要重新规定控件的位置,使其能在目标位
置显示出来
______________________________________________
SetRect
VB声明
Declare Function SetRect Lib "user32" Alias "SetRect" (lpRect As RECT, ByVal
 X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
说明
设置指定矩形的内容
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpRect RECT,欲设置的矩形
X1 Long,左侧区域(Left)的值
Y1 Long,顶部区域(Top)的值
X2 Long,右侧区域(Right)的值
Y2 Long,底部区域(Bottom)的值
_____________________________________________________
SetRectEmpty
VB声明
Declare Function SetRectEmpty Lib "user32" Alias "SetRectEmpty" (lpRect As R
ECT) As Long
说明
将矩形lpRect设为一个空矩形(所有字段都为空)
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpRect RECT,欲设为空的矩形
________________________________________
SetWindowContextHelpId
VB声明
Declare Function SetWindowContextHelpId Lib "user32" Alias "SetWindowContext
HelpId" (ByVal hWnd As Long, ByVal dw As Long) As Long
说明
为指定的窗口设置帮助场景(上下文)ID
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hWnd Long,窗口句柄
dw Long,新的帮助场景ID
__________________________________________________
SetWindowLong
VB声明
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hw
nd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
说明
在窗口结构中为指定的窗口设置信息
返回值
Long,指定数据的前一个值
参数表
参数 类型及说明
hwnd Long,欲为其取得信息的窗口的句柄
nIndex Long,请参考GetWindowLong函数的nIndex参数的说明
dwNewLong Long,由nIndex指定的窗口信息的新值
_____________________________________________________
SetWindowPlacement
VB声明
Declare Function SetWindowPlacement Lib "user32" Alias "SetWindowPlacement" 
(ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
说明
设置窗口状态和位置信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,欲设置位置信息的窗口的句柄
lpwndpl WINDOWPLACEMENT,这个结构包含了窗口的位置与状态信息
________________________________________________________________
SetWindowPos
VB声明
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd 
As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, By
Val cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
说明
这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。
该函数与DeferWindowPos函数相似,只是它的作用是立即表现出来的(在vb里使用:针
对vb窗体,如它们在win32下屏蔽或最小化,则需重设最顶部状态。如有必要,请用一个
子类处理模块来重设最顶部状态
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,欲定位的窗口
hWndInsertAfter Long,窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后
面。也可能选用下述值之一:
HWND_BOTTOM 将窗口置于窗口列表底部
HWND_TOP 将窗口置于Z序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的
窗口显示的顺序
HWND_TOPMOST 将窗口置于列表顶部,并位于任何最顶部窗口的前面
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_FRAMECHANGED 强迫一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有改变
注解
窗口成为最顶级窗口后,它下属的所有窗口也会进入最顶级。一旦将其设为非最顶级,
则它的所有下属和物主窗口也会转为非最顶级。Z序列用垂直于屏幕的一根假想Z轴量化
这种从顶部到底部排列的窗口顺序





     又臭,又硬。
           小石头

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.233.140]
--
※ 修改:·bloom 於 07月23日13:20:33 修改本文·[FROM: 202.118.233.140]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.318毫秒