VB API学习(二)——限定光标移动范围

Eddy 发布于2009-12-19 19:12:45 分类: 程序设计 已浏览loading 网友评论1条 我要评论

今日主角: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 Type

Public Type POINTAPI
        x As Long
        y As Long
End Type

Private Sub Command1_Click()         '限制移动范围
Dim client As RECT
Dim upperleft As POINTAPI

GetClientRect Me.hwnd, client
upperleft.x = client.Left
upperleft.y = client.Top
ClientToScreen Me.hwnd, upperleft
OffsetRect client, upperleft.x, upperleft.y
ClipCursor client

End 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

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言