マウスの現在地を調べる
マウスの画面上の現在地を取得するテクニックです。
タスクトレイを使用した場合のポップアップメニューを表示する場合に便利です。
サンプル(32bit) ダウンロード
'マウスカーソルの位置取得API&構造体 Private Type POINTAPI x As Long y As Long End Type Private lpPoint As POINTAPI Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'タスクトレイのマウスのクリックイベント処理 'PictureBoxのScaleModeプロパティを"3 - ピクセル"にしないと正常に動作しません Dim hMenu As Long, hSubMenu As Long Dim nRC As Long Dim vRC Select Case X Case WM_LBUTTONUP '左クリックされた場合 Me.Show 'タスクトレイのアイコンを削除 Call NotifyIcon("DELETE") Case WM_RBUTTONUP '右クリックされた場合 'Form1のメニューをマウスカーソルがあるところに表示 menRect.Left = 0 menRect.Top = 0 menRect.Right = Screen.Width / Screen.TwipsPerPixelX menRect.Bottom = Screen.Height / Screen.TwipsPerPixelY nRC = GetCursorPos(lpPoint) hMenu = GetMenu(Form1.hwnd) hSubMenu = GetSubMenu(hMenu, 0) nRC = TrackPopupMenu(hSubMenu, 0, lpPoint.X, lpPoint.Y, 0, Form1.hwnd, menRect) End Select End Sub
サンプル解説
ポップアップメニューを表示する為に、GetCursorPos関数でマウスの画面上の現在地を取得しています。
構造体の内容は次の通りです。
X マウスの画面上のX座標 Y マウスの画面上のY座標 座標情報はピクセルです。
[ Window Close ]