龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

怎样限制鼠标移动

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
本文介绍如何限制鼠标在窗口的指定范围内移动。这个技术在需要防止用户鼠标在指定区域内活动时非常 有用。例如在一个射击游戏中,需要限制鼠标在射击区内移动。 操作步骤 1、建
本文介绍如何限制鼠标在窗口的指定范围内移动。这个技术在需要防止用户鼠标在指定区域内活动时非常
  有用。例如在一个射击游戏中,需要限制鼠标在射击区内移动。
  操作步骤
  1、建立一个新工程项目,缺省建立窗体FORM1
  2、添加一个新模体
  3、粘贴下面代码到新模体
  
  OptionExplicitDeclareFunctionClipCursorLib"user32"(lpRectAsAny)AsLong
  DeclareFunctionClipCursorClearLib"user32"Alias"ClipCursor"(ByVallpRectAsLong)AsLong
  DeclareFunctionClientToScreenLib"user32"(ByValhwndAsLong,lpPointAsPOINTAPI)AsLong
  TypeRECT
  LeftAsLong
  TopAsLong
  RightAsLong
  BottomAsLong
  EndType
  TypePOINTAPI
  XAsLong
  YAsLong
  EndType
  PublicRetValueAsLong
  PublicClipModeAsBoolean
  
  PublicSubSetCursor(ClipObjectAsObject,SettingAsBoolean)
  'usedtoclipthecursorintotheviewportand
  'turnoffthedefaultwindowscursor
  
  DimCurrentPointAsPOINTAPI
  DimClipRectAsRECT
  
  IfSetting=FalseThen
  'setclipstatebacktonormal
  RetValue=ClipCursorClear(0)
  ExitSub
  EndIf
  
  'setcurrentposition
  WithCurrentPoint
  .X=0
  .Y=0
  EndWith
  'findpositiononthescreen(notthewindow)
  RetValue=ClientToScreen(ClipObject.hwnd,CurrentPoint)
  'designatecliparea
  WithClipRect
  .Top=CurrentPoint.Y
  .Left=CurrentPoint.X
  .Right=.Left ClipObject.ScaleWidth
  .Bottom=.Top ClipObject.ScaleHeight
  EndWith'clipit
  RetValue=ClipCursor(ClipRect)
  EndSub
  
  4、添加一个图片框控件(PICTURE1)到窗体(FORM1)
  5、设置PICTURE1的尺寸和FORM1的一样大
  6、在PICTURE1的CLICK事件中添加以下代码:
  
  PrivateSubPicture1_Click()
  ClipMode=NotClipMode
  SetCursorPicture1,ClipMode
  EndSub
  
  7、保存工程项目
  8、运行程序。在图片框单击鼠标,鼠标将被包含在图片框控件的区域内。要释放限制状态只需再次单击鼠标。
  注意:如果释放限制状态失败,鼠标将被永久限制,只能用重新启动机器来解决。
  另一个限制鼠标活动范围的方法是关闭鼠标,用其他图象代替光标,例如手枪。->

精彩图集

赞助商链接