



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
vb编程api函数-鼠标类得到当前鼠标指针的坐标:GetCursorPos函数声明:public Type POINTAPIx As Longy As LongEnd TypePublic Declare Function GetCursorPos Lib user32 _(lpPoint As POINTAPI) As Long 参数缺省为byref指针传递调用:先声明一个自定义类型变量: Dim z As POINTAPIPrivate Sub Timer1_Timer()GetCursorPos z 注:这里z是引用地址传递,其值改变,就象返回值Label1.Caption = z.xLabel2.Caption = z.yEnd Sub参数lpPoint返回鼠标在屏幕上坐标(不限于程序窗体),如将鼠标指针移到屏幕左上角时,z.x=0,z.y=0,而鼠标移到屏幕右下角时,z.x=639;z.y=477=设置鼠标在屏幕上的坐标 : SetCursorPos函数声明:Private Declare Function SetCursorPos Lib user32 (ByVal X As Long, ByVal Y As Long) As Long调用如:Private Sub Command1_Click()Call SetCursorPos(600, 100) 将鼠标定位到屏幕(600,100)处。End Sub很简单,注:屏幕是以象素为单位的(与屏幕分辨率设定有关)。不是缇。=自动按下鼠标按纽:mouse_event过程函数该过程能在程序中模拟手工按下或抬起鼠标,移动鼠标的操作,声明:Public Declare Sub mouse_event Lib user32 (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)一般只用它的第1个参数,指明按下或抬起哪个按纽,如果要模拟鼠标移动,则要用到第2,3个参数dx和dy, 而最后面两个参数始终不用。第1个参数dwFlags的可能设置值如下:MOUSEEVENTF_LEFTDOWN=&H2: 模拟鼠标左键按下MOUSEEVENTF_LEFTUP :模拟鼠标左键抬起MOUSEEVENTF_RIGHTDOWN: 模拟鼠标右键按下MOUSEEVENTF_RIGHTUP :模拟鼠标右键抬起MOUSEEVENTF_ABSOLUTE=&H8000: 由参数dx和dy指定鼠标坐标系统中的一个绝对位置。在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成6553565535个单元MOUSEEVENTF_MOVE=&H1 :移动鼠标调用如:在屏幕上指定位置按下鼠标左键:Public Const MOUSEEVENTF_LEFTDOWN = &H2Public Declare Function SetCursorPos Lib user32 (ByVal x As Long, ByVal y As Long) As LongPrivate Sub Timer1_Timer()SetCursorPos 300, 20mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0&End Sub模拟鼠标移动需要设置其dx和dy参数来确定鼠标位置,这时第1个参数用MOUSEEVENTF_MOVE加上MOUSEEVENTF_ABSOLUTE组合,如下:Public Const MOUSEEVENTF_MOVE = &H1Public Const MOUSEEVENTF_ABSOLUTE = &H8000mouse_event MOUSEEVENTF_ABSOLUTE + MOUSEEVENTF_MOVE, 65535, 65535, 0&, 0& 移动鼠标mouse_event MOUSEEVENTF_LEFTDOWN, 0&, 0&, 0&, 0& 按下鼠标这样可省去用SetCursorPos函数,不过它不以象素为度量单位,而是将长宽分别平分为65535个鼠标位置点,要注意。补充说明:参数dx- Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定水平方向的绝对位置或相对运动参数dy- Long,根据是否指定了MOUSEEVENTF_ABSOLUTE标志,指定垂直方向的绝对位置或相对运动=限制鼠标活动区域函数:ClipCursor函数限制光标只能在参数lpRect给出的矩形区域内运动。声明:Public Declare Function ClipCursor Lib user32 (lpRect As RECT) As Long参数lpRect声明为RECT型,RECT的声明如下:Public Type RECTLeft As LongTop As Long Left,Top为左上角坐标。Right As LongBottom As Long Right,Bottom为右下角坐标。End Type注:以上坐标使用的是屏幕坐标。调用如:Dim lxnRect As RECTPrivate Sub Form_Click()Static a As Booleana = Not aIf a = True Then 活动范围为Form1lxnRect.Left = Form1.Left Screen.TwipsPerPixelXlxnRect.Top = Form1.Top Screen.TwipsPerPixelYlxnRect.Right = (Form1.Left + Form1.Width) Screen.TwipsPerPixelXlxnRect.Bottom = (Form1.Top + Form1.Height) Screen.TwipsPerPixelYClipCursor lxnRectElse 活动范围为全屏幕lxnRect.Left = 0lxnRect.Top = 0lxnRect.Right = Screen.Width Screen.TwipsPerPixelXlxnRect.Bottom = Screen.Height Screen.TwipsPerPixelYClipCursor lxnRectEnd IfEnd Sub上例是这样的,在窗体上单击时,鼠标活动限在此窗体,再单击,则恢复为全屏幕活动范围。注:在VB中,所有尺寸都化为缇了(包括screen对象的width,height),而在API中,所有尺寸都为象素,因此,要统一单位,用转换比例screen对象的TwipsPerPixelX和TwipsPerPixelY(好象值就等于15。不知是否固定不变。)=显示/隐藏鼠标指针:ShowCursor函数该函数可用于隐藏鼠标,但鼠标仍然可看不见地移动。声明:Declare Function ShowCursor Lib user32 (ByVal bShow As Long) As Long参数很简单:bShow-当为true且函数返回值大于等于0时,显示指针,当为false且函数返回值小于0时,隐藏指针。注:该函数的函数返回值需要注意:它返回显示计数,windows维持着一个内部显示计数;倘若bShow为TRUE,那么每调用一次这个函数,计数就会递增1;反之,如bShow为FALSE,则计数递减1。只有在这个计数大于或等于0的情况下,指针才会显示出来。而小于0时则隐藏,因此,不单是简单地把bShow设为false就可以了。不然要想再使指针显示出来,可能会遇到困难。如:Dim a As BooleanPrivate Sub Form_Click()a = Falsex = ShowCursor(a)Print xEnd Sub如果我们多次单击form窗体,则x的值会变为-1,-2,-3,-4这时,如果再简单地把a改为true,则单击1次时指针不会重显,x的值会变为-3,-2,-1,0只有多次单击使x等于大于0的时候,指针才会重显。=在VB中捕捉mouse_leave事件:SetCapture和ReleaseCapture函数SetCapture函数:设置鼠标捕获到指定窗口,使该窗口接收所有鼠标输入。ReleaseCapture函数:释放鼠标捕获。声明:Declare Function SetCapture Lib user32(ByVal hwnd As Long) As LongDeclare Function ReleaseCapture Lib user32() As Long参数:hwnd-要接收所有鼠标输入的窗口句柄。调用如(捕捉command2的mouseleave事件:Private Sub Command2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)Text1.Text = X & , & YDim MouseOver As BooleanMouseOver = (0 = X) And (X = Command2.Width) And (0 = Y) And (Y = Command2.Height) 这里要注意,一个控件的mouse类事件返回的X,Y坐标值是此控件自身的窗口坐标,不是Form的坐标!所以左上角都是(0,0)-右下角(width,height).If MouseOver Th
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电工》高级练习题(含参考答案)
- 细节管理提升护理质量
- AI大模型赋能港口设施数字运维一体化智能解决方案
- 重症监护患者夜间睡眠
- 网络服务器配置与管理(微课版) 习题及答案
- 2025年全民科学素质竞赛网络知识竞赛试题库及答案(共150题)
- 销售策划目的试题及答案
- 河北省张家口市普通高中学业水平选择性模拟考试三模 英语试题(含答案)
- 2025年山东省泰安市东平县(五四学制)中考三模历史试题(含答案)
- 2025【合同范本】租赁合同解除协议模板
- 外国经济思想史习题答案-打印版
- 【原创】R语言数据可视化分析案例:探索BRFSS数据数据分析报告论文(附代码数据)
- 成都市锦江区2022-2023学年四年级数学第二学期期末复习检测试题含解析
- 山东黄金集团昌邑矿业有限公司莲花山铁矿矿山地质环境保护与土地复垦方案
- 显微镜望远镜的设计与组装
- 风电财务经济评价讲义资料课件
- 中石油职称英语通用教材
- 浅议“五育融合”之劳动教育的多向育人功能 论文
- 部编版语文六年级下册 全册看拼音写词语(含答案)
- 2022年广西高考物理试卷(甲卷)解析版
- 《如何与负面情绪共处》(课件)-小学生心理健康通用版
评论
0/150
提交评论