首页 >> 读书频道 >> 电脑 >> 限制鼠标的移动
 
· 图象转换下
· 文件拖动到文本框后自动打
· 图象转换上
· VB:一组应用技巧
· 编程规范四
· 编程规范三
· 在关机或Logff前信息
· 编程规范二
· 用VB快速读取TextB
· 编程规范一
· 在VB中用API实现多媒
· 在VB中建立可旋转的文本
 
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

限制鼠标的移动


查看有无更新版本

关键字:VB 2006-9-18

 

 一. 限制鼠标的移动---- 有时我们的软件要求用户在未完成某一任务时,鼠标不能移出当前活动控件,换句话就是将鼠标限制在控件的内部,直到任务完成或用户中断为止。这个功能借助API函数实现起来思路很清楚,代码也很简洁。其思路是先确定当前鼠标的位置;然后确定当前活动控件的大小;最后将鼠标限制在活动控件内。(下面忽略项目建立等过程) ---- 1.建立一个新项目:新窗体为form1,在form1上添加一个commandbutton,设置其Name=CMButton1;Caption="将鼠标限制在此按钮中"  ---- 2.拷贝API函数和POINTAPI结构:打开VB6.0自带的API浏览器,调入WIN32API.txt文件,复制以下结构和函数声明到form1的声明部分:  Private Type RECT    Left As Long    Top As Long    Right As Long    Bottom As LongEnd Type   Private Type POINTAPI        x As Long        y As Long   End Type    Private Declare Function ClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal    hwnd  As Long, lpPoint As POINTAPI) As Long    '用来确定当前鼠标的位置    Private Declare Function ClipCursor Lib "user32" Alias "ClipCursor" (lpRect As Any)      As Long  '用来限定当前鼠标的活动范围 ---- 3.定义一个通用过程ConfineTo Public Sub ConfineTo (myCtl As Object) On Error Resume NextDim tmpRect As RECTDim pt As POINTAPI With myCtlIf TypeOf myCtl Is Screen Then '锁定在屏幕范围内  tmpRect.Left = 0  tmpRect.Top = 0  tmpRect.Right = (.Width \ Screen.TwipsPerPixelX)  tmpRect.Bottom = (.Height \ Screen.TwipsPerPixelY) Elseif TypeOf myCtl Is form '锁定在窗体范围内  tmpRect.Left = (.Left \ Screen.TwipsPerPixelX)  tmpRect.Top = (.Top \ Screen.TwipsPerPixelY)  tmpRect.Right = (.Left + .Width) \ Screen.TwipsPerPixelX  tmpRect.Bottom = (.Top + .Height) \ Screen.TwipsPerPixelY else  pt.X = 0  pt.Y = 0  Call ClientToScreen(.hWnd, pt)    '获取当前控件在屏幕上的位置  tmpRect.Left = pt.X          '保存当前控件位置  tmpRect.Top = pt.Y  pt.X = .Width  pt.Y = .Height  Call ClientToScreen(.hWnd, pt)  tmpRect.Bottom = pt.Y  tmpRect.Right = pt.X End If Call ClipCursor(tmpRect)End WithEnd Sub  ---- 4.在 CMButton1_Click()中加入以下代码     Static Cliped As Boolean    '静态变量用来控制状态切换If Not Cliped Then ConfineTo Cmbutton1 Cliped = TrueElse ConfineTo Screen  '取消鼠标限制 Cliped = TrueEnd If ---- 5. 运行后,鼠标点击cmbutton1,此时鼠标只能被锁定在此按钮内部,再次点击按钮,限制取消。 二.创建临时文件 ---- 临时文件用来保存软件运行过程中的临时变化,这对于熟悉WORD等软件的人来说,经常会遇到。那么临时文件是如何产生的呢,其实很简单,只需要一个API函数就可以。 ---- 1.拷贝声明函数(方法同前)  Private Declare Function GetTempFileName Lib "kernel32" _  Alias "GetTempFileNameA" (ByVal lpszPath As String, _  ByVal lpPrefixString As String, ByVal wUnique As Long, _  ByVal lpTempFileName As String) As Long参数定义如下:lpszPath =传入保存临时文件的路径 ,如"C:\mytemp"lpPrefixString=传入临时文件名开始的前三个字母,起到帮助识别临时文件来源的作用。wUnique =0 ,windows随机产生文件名;否则安其值定义文件名。lpTempFileName=返回随机文件名 ---- 2.返回临时文件名 Private Function GenTempName(sPath As String)Dim sPrefix As StringDim lUnique As LongDim sTempFileName As StringIf IsEmpty(sPath) Then sPath = "c:\temp"sPrefix = "TVB"lUnique = 0   'windows随机给名      sTempFileName = Space$(100) GetTempFileName sPath, sPrefix, lUnique, sTempFileNamesTempFileName = Mid$(sTempFileName, 1, InStr(sTempFileName, Chr$(0)) - 1) '去掉多余空格GenTempName = sTempFileNameEnd Function ---- 3.将下面代码加入到form1_click()事件中    MsgBox GenTempName("c:\temp") ---- 4.运行,鼠标点击form,弹出msgbox,显示生成"c:\temp\TVB724.tmp"文件,用文件管理器查看,在c:\temp下有TVB724.tmp 文件,长度为0K。 ---- 需要注意的是,传入的路径必须是有效路径,否则GenTempName函数返回0,lpTempFileName中也没有临时文件名。  三.结束语 ---- 从上面可以看出,API函数的确简单高效,但也充满一些看似高深的变量而使人却步。我们不禁会问,究竟什么时候要用到API函数?具体哪些函数可以解决我的问题?,那些函数中的变量都代表什么?其实对这些问题,即使对一个VB高手也难给出明确的回答,因为API函数库实在太庞大了,每一个人最终只能熟悉其中的一小部分(这也可能是调用API的文章层出不穷的原因吧)。总结自己的一点经验,我觉得应该注意以下几点。 ---- 1.熟练掌握VB基本技巧,了解其所能所不能,这是最基本的要求。   ---- 2.了解WINDOWS内部控制机理,这样对一些复杂的问题就可以逐步分析其调用机制,初步确定采用哪部分的API函数来解决问题  ---- 3.案头必备一本最新的VB版的WINDOWS API 大全,推荐机械工业出版社的<>。书中给出了每一个VB可以调用的API函数的详细说明,可以帮助精确了解所需要的API函数的变量声明。  ---- 4.多看别人的程序。报纸杂志,尤其是网上这方面的文章数不清。这是最快的方法。  ---- 5.随用随查。永远不要在用不到的函数上浪费宝贵的时间  

限制鼠标的移动

[ 1 ]
限制鼠标的移动 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑