今日主角:ClipCursor、GetClientRect、ClientToScreen、OffsetRect
首先来看下这几个API的详解
VB声明 | |
Declare Function ClipCursor& Lib "user32" (lpRect As RECT) Declare Function ClipCursorBynum& Lib "user32" Alias "ClipCursor" (ByVal lpRect As Long) | |
说明 | |
将指针限制到指定区域。ClipCursorBynum是一个别名,允许我们清除以前设置的指针剪切区域 | |
返回值 | |
Long,非零表示成功,零表示失败。会设置GetLastError | |
参数表 | |
参数 | 类型及说明 |
lpRect | RECT,指定一个矩形,用像素屏幕坐标系统表示。鼠标指针必须在这个区域内运动。如使用函数的ClipCursorBynum形式,则可将参数设为Long值,用它传递一个0,禁止指针剪切,恢复常规运作状态 |
注解 | |
指针剪切后,按Ctrl+Alt+Del可简单的清除剪切区域 |
VB声明 | |
Declare Function GetClientRect Lib "user32" Alias "GetClientRect" (ByVal hwnd As Long, lpRect As RECT) As Long | |
说明 | |
返回指定窗口客户区矩形的大小 | |
返回值 | |
Long,非零表示成功,零表示失败。会设置GetLastError | |
参数表 | |
参数 | 类型及说明 |
hwnd | Long,欲计算大小的目标窗口 |
lpRect | RECT,指定一个矩形,用客户区域的大小载入(以像素为单位) |
注解 | |
lpRect的左侧及顶部区域肯定会被这个函数设为零 |
VB声明 | |
Declare Function ClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long | |
说明 | |
判断窗口内以客户区坐标表示的一个点的屏幕坐标 | |
返回值 | |
Long,非零表示成功,零表示失败 | |
参数表 | |
参数 | 类型及说明 |
hwnd | Long,判断客户区坐标时那个窗口的句柄 |
lpPoint | POINTAPI,用hwnd窗口的客户区坐标表示的点,这个参数会包含屏幕坐标系统中相同的点 |
VB声明 | |
Declare Function OffsetRect Lib "user32" Alias "OffsetRect" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long | |
说明 | |
该函数通过应用一个指定的偏移,从而让矩形移动起来。x会添加到右侧和左侧区域。y添加到顶部和底部区域。偏移方向则取决于参数是正数还是负数,以及采用的是什么坐标系统 | |
返回值 | |
Long,非零表示成功,零表示失败。会设置GetLastError | |
参数表 | |
参数 | 类型及说明 |
lpRect | RECT,欲移动的矩形 |
x | Long,水平偏移量 |
y | Long,垂直偏移量 |
源代码:
'标准模块内申明
Option Explicit
Public Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
Public Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Public Declare Function OffsetRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End TypePublic Type POINTAPI
x As Long
y As Long
End TypePrivate Sub Command1_Click() '限制移动范围
Dim client As RECT
Dim upperleft As POINTAPIGetClientRect Me.hwnd, client
upperleft.x = client.Left
upperleft.y = client.Top
ClientToScreen Me.hwnd, upperleft
OffsetRect client, upperleft.x, upperleft.y
ClipCursor clientEnd Sub
Private Sub Form_Unload(Cancel As Integer) '取消限制
ClipCursor ByVal 0&
End Sub
已经有(1)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/263.html 欢迎订阅Eddy Blog。
不错,