MouseMove – 什么是相反的事件?

Private Sub framePDF_MouseMove(ByVal... ) framePDF.BackColor = &H80000012& 

所以,框架的颜色正在改变。
我找不到事件返回的颜色 – 当光标离开框架?

在vba和VB6中没有MouseLeave事件。

实现这一点的最好方法是在鼠标进入框架时启动计时器。

然后在计时器代码中检查鼠标指针是否仍然在框架的边界内。 如果不改变颜色,停止计时器

把这个代码放在一个模块中:

 Public Declare Function GetCursorPos Lib "user32" (lpPoint As _ POINTAPI) As Long Public Type POINTAPI x As Long y As Long End Type 

在窗体上创build一个计时器,设置interval =10 Enbaled = False

然后代码看起来像这样:

 Private Sub frameTest_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) frameTest.BackColor = vbRed tmrMouseLeave.Enabled = True End Sub Private Sub tmrMouseLeave_Timer() Dim pt As POINTAPI Call GetCursorPos(pt) Dim xValue As Long, yValue As Long xValue = pt.x * Screen.TwipsPerPixelX yValue = pt.y * Screen.TwipsPerPixelY If (xValue > (Me.Left + frameTest.Left)) And _ (xValue < (Me.Left + frameTest.Left + frameTest.width)) And _ (yValue > (Me.Top + frameTest.Top)) And _ (yValue < (Me.Top + frameTest.Top + frameTest.height)) Then 'we are still inside the frame Else 'mouse is outside the frame frameTest.BackColor = vbBlue tmrMouseLeave.Enabled = False End If End Sub 

在用户窗体上? 用户窗体也有一个MouseMove事件,当您在框架中时不会触发。

 Private Sub Frame1_MouseMove(ByVal ...) Me.Frame1.BackColor = vbRed End Sub Private Sub UserForm_MouseMove(ByVal ...) Me.Frame1.BackColor = vbWhite End Sub 

当你结束时会把框架变成红色,而当你不在时则变成白色。 这些事件不断发生,所以明智地使用它们。