夹住鼠标指针吸引用户注意

ZDNet软件频道 时间:2003-11-27 作者:ZDNet China |  我要评论()
本文关键词:vbtips 鼠标
夹住鼠标指针,或者将其移动范围限制到你的程序窗口里,是保证用户将其注意力集中在你的程序上的一个好办法。下面让我们看看在如何在VB中实现它。
本文译自Builder.com,未经许可请勿转载
夹住鼠标指针,或者将其移动范围限制到你的程序窗口里,是保证用户将其注意力集中在你的程序上的一个好办法。但是这个办法不是完美的,因为实现它要花些功夫,然而它在某些情况下很管用。

要把鼠标指针限制在屏幕的特定区域里,你就要使用API的函数ClipCursor。下面就是声明:

Declare Function ClipCursor Lib "user32" _
  (lpRect As Any) As Long

这个函数的一个自变量是RECT结构,它定义了限制区域,这个区域用屏幕象素来表示。下面的示例代码显示了如何将VB的twip转换成像素。RECT结构,或者是VB里的UDT,如下所示:

Public Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

要取消限制,你可以再次调用ClipCursor,用它传递包含有整个屏幕坐标的结构。但是,使用ClipCursorByNum函数会更容易一些,因为这个函数就是专门用来取消限制的:

Declare Function ClipCursorByNum Lib "user32" Alias _
  "ClipCursor" (ByVal lpRect As Long) As Long

要注意,这个函数是ClipCursor的别名,它接受一个类型为Long的自变量。要确保传递了零这个值,以取消限制。

下面两个Click(点击)事件过程能够和窗体里的按钮关联起来,以说明下面的技巧:

Private Sub cmdClip_Click()

Dim ClipArea As RECT

With ClipArea
    .Left = Me.Left / Screen.TwipsPerPixelX
    .Top = Me.Top / Screen.TwipsPerPixelY
    .Right = .Left + Me.Width / Screen.TwipsPerPixelX
    .Bottom = .Top + Me.Height / Screen.TwipsPerPixelY
End With

Call ClipCursor(ClipArea)

End Sub

Private Sub cmdRelease_Click()

Call ClipCursorByNum(0)

End Sub

有很多动作都能够取消限制,例如调整VB窗体的大小或者移动窗体,例如激活另一个程序(比如使用[Alt][Tab])或者([Ctrl][Alt][Delete])。你的程序可以通过在窗体移动,或者在改变大小的时候重新进行限制来处理窗体动作。限制会一直持续到程序结束,所以程序总是会在它终止之前取消限制。

夹住鼠标指针不是一个限制应用程序的鼠标输入的简单方法,但是在有些情况下,尤其当用户不是计算机高手时,它就能够起作用。


Peter Aitken自Visual Basic 1.0版上市开始就在用它编程。他已经编写了很多关于Visual Basic以及其他计算机和编程方面的书和杂志文章。




责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134