【API Function】


カーソル移動範囲を取得・設定
 カーソル移動範囲を得たり、限定したりするには、 GetClipCursor,ClipCursor関数を使用します。
ClipCursor関数は、カーソルをクライアント領域の外に 移動できないようにしたい時などに使用します。
なお、移動範囲の座標はピクセル単位、 スクリーン座標で取得・指定します。


(GetClipCursor,ClipCursor 関数の使用方法−主な処理)

フォームのGeneralセクションに次の宣言コードを追加して下さい。

'構造体の定義
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

'マウスカーソルの移動可能な範囲を、指定された長方形の内側に制限、
'以後、マウスを動かしたり、SetCursorPos 関数を呼び出したりしても、
'マウスカーソルを長方形の外側に出すことはできなくなる
Private Declare Function ClipCursor Lib "user32" _
                      (lpRect As Long) As Long

'マウスカーソルの移動可能な範囲を、スクリーン座標で取得
Private Declare Function GetClipCursor Lib "user32" _
                      (lprc As RECT) As Long

ここで、GetClipCursor関数とClipCursor関数の引数が違うことに注意 してください。本当であれば、ClipCursor関数の引数もRECT構造体なの ですが、移動範囲限定を解除するときに、(Byval 0&)を引数に指定しなければ ならないので、やむを得ずClipCursor関数の引数をLong型の配列変数としています。

詳しくは、サンプルの方をご覧下さい。以下には、主な処理のみ 紹介してあります。

    Dim rec As RECT
    Dim r(3) As Long '疑似RECT構造体
    Dim msg As String

    '疑似RECT構造体に格納
    '左上隅の座標
    r(0) = 0&: r(1) = 0&
    '右下隅の座標
    r(2) = 800&: r(3) = 600&
    'この範囲に限定
    ret = ClipCursor(r(0))

        'これを解除するとき
        ret = ClipCursor(ByVal 0&)

    '移動可能範囲を取得
    ret = GetClipCursor(rec)
    With rec
    msg = "移動可能範囲 " & "(" & .Left & "," & .Top & ")-" _
          & "(" & .Right & "," & .Bottom & ")"
    End With

この処理においてカーソルの移動範囲をとんでもない位置に設定すると、 強制終了しなくてはいけなくなるので、なるべく慎重に使用して下さい。


API Functionインデックス トップ


Copyright(C)1999 Tomoya. All rights reserved.