■ MouseMoveイベントを必ず発生させる

[Visual Basic Q & A 掲示板] [過去ログの一覧]


さいとう 2008/02/19(火) 14:27:56
Picture1を貼り付けて、下記のプロシージャーを書きます。

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text2.Text = X
End Sub

こうしたときに、フォームやコマンドボタンでクリック(ボタンを押しっぱなし)

にしたまま、マウスカーソルをPictutr1に移動すると、Picture1_MouseMoveが発生しません。

カーソルかPicture1の上に来たときは、必ずPicture1_MouseMoveを起こしたいです。
どうすれば、良いのでしょうか?

魔界の仮面弁士 2008/02/19(火) 14:57:32 <常連>
それぞれのコントロールごとに、座標判断を入れることになるでしょう。

Option Explicit

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Text1.Text = X
End Sub

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim L As Single, T As Single, R As Single, B As Single

    L = Picture1.Left - Command1.Left
    T = Picture1.Top - Command1.Top
    R = L + Picture1.Width
    B = T + Picture1.Height

    If (L <= X And X <= R) And (T <= Y And Y <= B) Then
        Text1.Text = X
    End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim L As Single, T As Single, R As Single, B As Single

    L = Picture1.Left
    T = Picture1.Top
    R = L + Picture1.Width
    B = T + Picture1.Height
    
    If (L <= X And X <= R) And (T <= Y And Y <= B) Then
        Text1.Text = X
    End If
End Sub


もしくは Timer 等で、定期的にマウス座標を監視するとか(GetCursorPos API)。

さいとう  2008/02/19(火) 16:21:14
[[解決]]

解決しました。
ありがとうございます。

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library