私はそれを強調するためにMouseMoveでコードを書いた画像を持っています。これは私が望んでいることですが、マウスが画像を離れるとハイライトが消えますが、それを行うイベントを見つけることができないようです。VisualBasic6.0で作業しています。マウスアップとダウンのイベントを試しましたが、要件と一致しません。
ありがとう
私はそれを強調するためにMouseMoveでコードを書いた画像を持っています。これは私が望んでいることですが、マウスが画像を離れるとハイライトが消えますが、それを行うイベントを見つけることができないようです。VisualBasic6.0で作業しています。マウスアップとダウンのイベントを試しましたが、要件と一致しません。
ありがとう
VB6にはそのようなイベントはありません(VB.NetにはMouseLeaveがありますが)。フォームの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
尊敬されている著者であり、当時VBコミュニティに優れたコンテンツを提供してくれたMarco Bellinasoによって書かれた、この正確な目的のための素晴らしい小さなocxコントロールがあります。
コントロールは「MBMouseHelper」と呼ばれます。http://www.devx.com/vb2themax/CodeDownload/19735のdevx.comからダウンロードできます。
代替テキストhttp://img25.imageshack.us/img25/3985/screencap20100809110523.jpg
MouseMove
このコントロールを便利にするVBの組み込みイベントの使用には2つの問題があります。
MouseMove
、画像のハイライトを解除するイベントをトリガーするウィンドウの任意の部分をジャンプできます。また、mouseleaveイベントをシミュレートする画像を大きな画像の中に入れることもできます。そうすれば、内側の画像(小さい方)を離れると、外側の画像のmousemoveイベントが発生します。また、これは、別の画像の代わりにフレームまたはラベルを使用する場合に機能します
mouseMoveイベントを使用する場合に注意することの1つは、強調表示するコントロールにいるときにフラグを立て、OUTになっているときに別のフラグを立てて、マウスのxy変更ごとに同じアクションを繰り返さないようにすることです。
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
コントロールはいつでもサブクラス化できます。 これがその方法を説明する記事です。