マウスカーソルの移動領域を取得 <TOP>
マウスカーソルの移動領域取得と制限をします。
GetClipCursor マウスカーソルの移動領域を取得
GetWindowRect ウィンドウの座標をスクリーン座標系で取得
ClipCursor マウスの移動範囲を制限
GetDesktopWindow Windowsのデスクトップ ウィンドウを識別
左:デスクトップの移動領域取得 右:ウインドウ(フォーム)の移動領域取得/ClipCursorでマウス移動はフォーム内に制限しています。
'================================================================ '= マウスカーソルの移動領域を取得
'= (GetClipCursor.bas) '================================================================ #include "Windows.bi" Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type ' マウスカーソルの移動領域を取得 Declare Function Api_GetClipCursor& Lib "user32" Alias "GetClipCursor" (lpRect As RECT) ' ウィンドウの座標をスクリーン座標系で取得 Declare Function Api_GetWindowRect& Lib "user32" Alias "GetWindowRect" (ByVal hWnd&, lpRect As RECT) ' マウスの移動範囲を制限 Declare Function Api_ClipCursor& Lib "user32" Alias "ClipCursor" (lpRect As RECT) ' Windowsのデスクトップ ウィンドウを識別。返されるポインタは、一時的なポインタ。後で使用するために保存しておくことはできない Declare Function Api_GetDesktopWindow& Lib "user32" Alias "GetDesktopWindow" () Var Shared Text1 As Object Var Shared Text2 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub ShowCurrentRect() Sub ShowCurrentRect() Var rct As RECT Var Ret As Long Ret = Api_GetClipCursor(rct) Text1.SetWindowText Format$(rct.Left ,"Left :####") & Chr$(13) & Format$(rct.Top ,"Top :####") Text2.SetWindowText Format$(rct.Right,"Right :####") & Chr$(13) & Format$(rct.Bottom,"Bottom:####") End Sub '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var Ret As Long ShowCurrentRect Line(80, 34) - (160, 70), , , b SetDrawWidth 5 Pset(80, 34), 5 Pset(160, 70), 5 End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var rct As RECT Var Ret As Long Ret = Api_GetWindowRect(Api_GetDesktopWindow(), rct) Ret = Api_ClipCursor(rct) ShowCurrentRect End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var rct As RECT Var Ret As Long Ret = Api_GetWindowRect(GethWnd, rct) Ret = Api_ClipCursor(rct) ShowCurrentRect End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End