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

解決


さいとう  2008-02-19 23:27:56  No: 100325

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 23:57:32  No: 100326

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

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-20 01:21:14  No: 100327

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加