■97966 |
Re[2]: WndProcによるマウス押下状態取得 |
□投稿者/ プログラマー -(2021/08/14(Sat) 17:39:56)
| とっちゃんさん回答ありがとうございます。
フォームの表示・非表示を行うとマウスイベントが正常に取得できないケースがあります。
※フォーム1(スタートアップ時表示) Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load SetDesktopBounds(0, 0, 640, 480) Form2.Show() Form2.Hide() Form2.SetDesktopBounds(640, 0, 640, 480) End Sub
Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown Hide() Form2.Show() End Sub
Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp Stop End Sub End Class
※フォーム2 Public Class Form2 Private Sub Form2_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp Stop End Sub End Class
MouseUpイベントが取得出来ればよいのですが、上記コードではマウスボタンを離した時のイベントがどちらのフォームでも発生しません。 そのためTimerコントロールを用いてウィンドウメッセージを取得するしかないと思い、質問いたしました。
> もし、API が使いたいのだ!ということであれば、GetAsyncKeyState API で判定できます(マウスの左ボタンなら、VK_LBUTTON)。 > ・GetAsyncKeyState API > https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getasynckeystate?WT.mc_id=DT-MVP-32182
上記URLではC++のコードしか記載されていませんが、VB.NETの場合はどのように書けばよろしいでしょうか? お手数をお掛けしますが、回答お願いいたします。
|
|