Vba 在vb6中在图像上热创建鼠标离开事件

Vba 在vb6中在图像上热创建鼠标离开事件,vba,vb6,mouseleave,Vba,Vb6,Mouseleave,我有一个图像,我已经在MouseMove中为它编写了代码。这是正在做什么,我想是当鼠标离开图像的高光消失,但我似乎找不到任何事件,将这样做。我在visual basic 6.0中工作。我已经尝试了mouseup和down事件,但它们不符合我的要求 谢谢在VB6中没有类似的事件,尽管VB.Net有。您需要在表单的MouseMove事件中执行一些操作,可能还需要任何容器控件 Private Sub Form_MouseMove(Button As Integer, Shift As Integer,

我有一个图像,我已经在MouseMove中为它编写了代码。这是正在做什么,我想是当鼠标离开图像的高光消失,但我似乎找不到任何事件,将这样做。我在visual basic 6.0中工作。我已经尝试了mouseup和down事件,但它们不符合我的要求


谢谢

在VB6中没有类似的事件,尽管VB.Net有。您需要在表单的MouseMove事件中执行一些操作,可能还需要任何容器控件

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' Unhighlight the image'
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' Highlight the image'
End Sub

在VB6中没有类似的事件,尽管VB.Net有。您需要在表单的MouseMove事件中执行一些操作,可能还需要任何容器控件

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' Unhighlight the image'
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' Highlight the image'
End Sub

您还可以将要模拟mouseleave事件的图像放在更大的图片中。这样,当您将内部图片缩小时,您将点击外部图片的mousemove事件。此外,如果使用框架或标签而不是另一张图片,也可以将要模拟mouseleave事件的图像放在更大的图片中。这样,当您将内部图片缩小时,您将点击外部图片的mousemove事件。此外,如果您使用框架或标签而不是另一张图片,这也可以起作用,您始终可以对控件进行子类化。这说明了如何执行此操作。

您始终可以对控件进行子类化。这就描述了如何做到这一点。

有一个很好的小ocx控件,它正是由Marco Bellinaso编写的,Marco Bellinaso是一位受人尊敬的作家,在他那个时代为VB社区贡献了大量优秀内容

该控件称为MB鼠标助手。您可以从devx.com下载,网址为

使用VB内置的MouseMove事件时,有两个问题使此控件非常有用:

当鼠标离开您的图像时,您必须捕捉到用户可以放置鼠标的所有位置,例如窗体或其他控件或附近的标签 用户仍然可以非常快速地移动鼠标,跳过窗口的任何部分,从而触发MouseMove事件,从而取消图像的高亮显示
马可·贝利纳索(Marco Bellinaso)写了一个很好的ocx控件,他是一位受人尊敬的作家,在他那个时代为VB社区贡献了大量优秀内容

该控件称为MB鼠标助手。您可以从devx.com下载,网址为

使用VB内置的MouseMove事件时,有两个问题使此控件非常有用:

当鼠标离开您的图像时,您必须捕捉到用户可以放置鼠标的所有位置,例如窗体或其他控件或附近的标签 用户仍然可以非常快速地移动鼠标,跳过窗口的任何部分,从而触发MouseMove事件,从而取消图像的高亮显示
如果使用mouseMove事件,需要注意的一件事是,当您在要高亮显示的控件中时,升起一个标志,当您不在时,升起另一个标志,以免在每次鼠标更改时重复相同的操作

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' if imageIsHighlighted = true then
  '    Unhighlight the image'
  '    imageIsHighlighted = false
  ' end if 
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' if imageIsHighlighted = false then
  '       Highlight the image'
  '       imageIsHighlighted = True
  ' end if 
End Sub

如果使用mouseMove事件,需要注意的一件事是,当您在要高亮显示的控件中时,升起一个标志,当您不在时,升起另一个标志,以免在每次鼠标更改时重复相同的操作

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' if imageIsHighlighted = true then
  '    Unhighlight the image'
  '    imageIsHighlighted = false
  ' end if 
End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ' if imageIsHighlighted = false then
  '       Highlight the image'
  '       imageIsHighlighted = True
  ' end if 
End Sub

似乎是唯一的选择,我现在把一个数组的图像,所以有点沉重的代码这种方法不工作的可靠性。如果您快速将鼠标从按钮上移开,经过包含的图像Image1,程序将错过MouseMove事件,您的按钮将保留悬停属性。您需要对窗口进行子类化,正如@pm2seems提到的一样,这是唯一的选项,我现在放了一个图像数组,所以代码有点重。这种方法不可靠。如果您快速将鼠标从按钮上移开,经过包含的图像Image1,程序将错过MouseMove事件,您的按钮将保留悬停属性。您需要对窗口进行子类化,如@pm_2+1所述,以捕获MouseMove事件的问题。许多程序员没有意识到这一点。将鼠标快速移出该区域不会触发包含控件的MoveMove,并且该控件的悬停属性将永远不会被删除。+1用于捕获MouseMove事件的问题。许多程序员没有意识到这一点。将鼠标快速移出该区域不会触发包含控件的MoveMove,并且该控件的悬停属性将永远不会被删除。