フォームを左クリック、右クリックしたときの座標を計算し表示させようと思っているのですが、うまくできません。
______________________________
Dim XR As Long
Dim YR As Long
Dim XL As Long
Dim YL As Long
_________________________
Private Sub Form1_Mousedown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
If e.Button = MouseButtons.Left Then
XL = Cursor.Position.X
YL = Cursor.Position.Y
End If
End Sub
_____________________________
Private Sub Form1_Mousedown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
If e.Button = MouseButtons.Right Then
XR = Cursor.Position.X
YR = Cursor.Position.Y
End If
End Sub
_____________________________
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Xpoint As Long
Dim Ypoint As Long
Xpoint = XL - XR
Ypoint = YL - YR
MsgBox(Xpoint, Ypoint)
End Sub
End Class
> Dim XR As Long
マウス座標なら、Integer で充分なのでは。
> Private Sub Form1_Mousedown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
『MouseUp イベント』のプロシージャ名を
『Form1_Mousedown』にするのは、如何なものかと。
(そもそも、Form1_Mousedown という名前が被っていますし)
> XL = Cursor.Position.X
e.X ではなく、Cursor.Position.X の方が必要なのですね。
> MsgBox(Xpoint, Ypoint)
う〜ん。第2引数に Ypoint を指定してはマズイと思いますよ。
> うまくできません。
どういう結果を期待して、実際にはどうなってしまうのでしょうか?
本当だ^^;
まちがってました。
左クリックした座標から右クリックした座標を引いたものを
定期的にメッセージボックスに表現したいと思っています。
「ポンッ、ポンッ」って感じです。
________________________
Dim XR As Long
Dim YR As Long
Dim XL As Long
Dim YL As Long
______________________
Private Sub Form1_Mousedown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
If e.Button = MouseButtons.Left Then
XL = Cursor.Position.X
YL = Cursor.Position.Y
End If
End Sub
____________________
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
If e.Button = MouseButtons.Right Then
XR = Cursor.Position.X
YR = Cursor.Position.Y
End If
End Sub
______________________
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Xpoint As Long
Dim Ypoint As Long
Xpoint = XL - XR
Ypoint = YL - YR
MsgBox(Xpoint, Ypoint)
End Sub
End Class
タイマーのところをこっちに変えたほうが、メッセージボックスが邪魔にならなかったです^^
例えばこれを、フォーム以外の他のウインドウ上で行いたい場合は、デバイスコンテキストを取得して、そのデバイスコンテキストに対しておこなうのでしょうか?
__________
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Xpoint As Long
Dim Ypoint As Long
Xpoint = XL - XR
Ypoint = YL - YR
Label1.Text = (Xpoint)
Label2.Text = (Ypoint)
End Sub
End Class
>例えばこれを、フォーム以外の他のウインドウ上で行いたい場合は、
最初の質問と内容が違います。
魔界の仮面弁士さんが指摘したコードでフォーム上でクリックした
座標が正常に処理されてるなら、まずその報告をしてください。
で、質問としては解決したのですからスレッドを閉じ、別の質問は
新しいスレッドで行ってください。共通する内容だと思う場合は
このスレッドのアドレスを質問文に含めてください。
>> うまくできません。
>どういう結果を期待して、実際にはどうなってしまうのでしょうか?
どういう結果が得られたのか?解決した内容はあるのか?
どういう結果を期待して、実際にはどうなってしまうのか?
伝える気が無いという事は解決しようと思ってないのですよね?
しつれいなことをし、申し訳ございませんでした。
結果としまして、フォーム内を左クリック、右クリックすることにより、フォーム内のラベルに左クリックの座標から右クリックの座標を引いたものを表示することが出来ました。
表示できなかった原因として、設置したタイマーのEnabledがTrueになってなかったのが原因と思います。基本的な知識なく、みなさんに迷惑をかけてしまい、申し訳ございません。
次はデバイスコンテキストについて聞きたいと思っていますので、新たにスレッドを作り質問したいと思います。
みなさん、いろいろとお答えを頂きありがとうございました。
ツイート | ![]() |