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

解決


さいとう  2008-02-19 14:27:56  No: 100325  IP: 192.*.*.*

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  No: 100326  IP: 192.*.*.*

それぞれのコントロールごとに、座標判断を入れることになるでしょう。

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  No: 100327  IP: 192.*.*.*

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

編集 削除