スクリーン座標からクライアント座標に変換 <TOP>
マウスカーソルの現在の位置に相当するスクリーン座標を取得し、クライアント座標に変換します。
GetCursorPos スクリーン座標を取得
ScreenToClient 点座標をスクリーン座標からクライアント座標に変換
フォームをクリックし、そのスクリーン座標をクライアント座標に変換してその位置を表示、さらにクリックした位置を赤点で示しています。
'================================================================ '= スクリーン座標からクライアント座標に変換
'= (ScreenToClient.bas) '================================================================ #include "Windows.bi" Type POINTAPI X As Long Y As Long End Type ' マウスカーソルの現在の位置に相当するスクリーン座標を取得 Declare Function Api_GetCursorPos& Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) ' 点座標をスクリーン座標からクライアント座標に変換 Declare Function Api_ScreenToClient& Lib "user32" Alias "ScreenToClient" (ByVal hWnd&, lpPoint As POINTAPI) Var Shared Text1 As Object
Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14
#define vbCrLf Chr$(13,10)
'================================================================
'=
'================================================================
Declare Sub Mainform_Click edecl ()
Sub Mainform_Click()
Var pa As POINTAPI
Var Ret As Long
Ret = Api_GetCursorPos(pa)
Ret = Api_ScreenToClient(GethWnd, pa)
Text1.SetWindowText "X = : " & Str$(pa.X) & vbCrLf & "Y = : " & Str$(pa.Y)
SetDrawWidth 3 '目視し易いよう(老眼対策・・・)
Pset(posi.X, posi.Y), 5
End Sub
'================================================================
'=
'================================================================
While 1
WaitEvent
Wend
Stop
End