マウスの現在地を調べる
マウスの画面上の現在地を取得するテクニックです。
タスクトレイを使用した場合のポップアップメニューを表示する場合に便利です。
サンプル(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 ]