鼠标编程小技巧二则

王朝厨房·作者佚名  2007-01-04
窄屏简体版  字體: |||超大  

作者:土人

一.通过鼠标在屏幕上的移动来控件程序界面

本例通过鼠标在屏幕上的移动来控制程序窗体的显示与隐藏:当鼠标移动到窗体所在区域时窗体显示,反之隐藏起来。仅需一条API函数:GetCursorPos。注意:如果需要将API函数置于模块中请对代码作相应修改。要尝试本例,需给标准EXE工程缺省添加一个Timer控件。

Private Type POINTAPI

x As Long

y As Long

End Type

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Sub Form_Load()

Me.Visible = False

Timer1.Enabled = True

Timer1.Interval = 100

End Sub

Private Sub Timer1_Timer()

Dim lResult As Long

Dim lpPoint As POINTAPI

Dim iCounter As Integer

lResult = GetCursorPos(lpPoint)

If lpPoint.x < Me.Left \ Screen.TwipsPerPixelX Or lpPoint.x > (Me.Left + _

Me.Width) \ Screen.TwipsPerPixelX Or lpPoint.y < Me.Top \ _

Screen.TwipsPerPixelY Or lpPoint.y - 10 > (Me.Top + Me.Height) \ _

Screen.TwipsPerPixelY Then

Me.Visible = False ’鼠标在窗体区域之外时

Else

Me.Visible = True ’鼠标在窗体区域之内时

End If

End Sub

二.获得Mouse_Exit事件

所谓Mouse_Exit事件,是指鼠标指针离开某一控件所应发生的事件。本例是通过Form_MouseMove事件来判断鼠标指针是在窗体之内还是窗体之外的,你可根据需要作相应改动。请给窗体缺省创建一个按钮(用于观察效果)。

Private Declare Function SetCapture Lib "user32" (ByVal hWnd As Long) As Long

Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim MouseExit As Boolean

MouseExit = (0 <= X) And (X <= Me.Width) And (0 <= Y) And (Y <= Me.Height)

If MouseExit Then

Me.Caption = "鼠标指针在窗体范围内"

Command1.Enabled = True

SetCapture Me.hWnd

Else

Me.Caption = "鼠标指针在窗体范围外"

Command1.Enabled = False

ReleaseCapture

End If

End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航