怎样限制鼠标移动
2006-02-27 11:40:41 来源:WEB开发网核心提示:本文介绍如何限制鼠标在窗口的指定范围内移动,这个技术在需要防止用户鼠标在指定区域内活动时非常有用,怎样限制鼠标移动,例如在一个射击游戏中,需要限制鼠标在射击区内移动,另一个限制鼠标活动范围的方法是关闭鼠标,用其他图象代替光标,操作步骤1、建立一个新工程项目,缺省建立窗体FORM12、添加一个新模体3、粘贴下面代码到新模
本文介绍如何限制鼠标在窗口的指定范围内移动。这个技术在需要防止用户鼠标在指定区域内活动时非常
有用。例如在一个射击游戏中,需要限制鼠标在射击区内移动。
操作步骤
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、运行程序。在图片框单击鼠标,鼠标将被包含在图片框控件的区域内。要释放限制状态只需再次单击鼠标。
注意:如果释放限制状态失败,鼠标将被永久限制,只能用重新启动机器来解决。
另一个限制鼠标活动范围的方法是关闭鼠标,用其他图象代替光标,例如手枪。->
有用。例如在一个射击游戏中,需要限制鼠标在射击区内移动。
操作步骤
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、运行程序。在图片框单击鼠标,鼠标将被包含在图片框控件的区域内。要释放限制状态只需再次单击鼠标。
注意:如果释放限制状态失败,鼠标将被永久限制,只能用重新启动机器来解决。
另一个限制鼠标活动范围的方法是关闭鼠标,用其他图象代替光标,例如手枪。->
更多精彩
赞助商链接