VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 マウス関係のメニュー
1.マウスのドラッグ・アンド・ドロップでファイル名取得
2.マウスカーソル位置の設定と取得
3.マウスのイベントを無効にしカーソルを非表示に設定・移動範囲を制限
4.マウス操作の自動化(SendInput 関数使用例)
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載のマウスに関するサンプル


3.マウスのイベントを無効にしカーソルを非表示に設定・移動範囲を制限
1.マウスのイベントを無効にしカーソルを非表示に設定・移動範囲を制限
2. 
3. 
4. 
5. 
6. 

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:追加なし
使用 API:
SetCursorPos / GetCursorPos
その他 :このサンプルは、Win32 API を使用しておりますので、ある程度 Win32 API が理解できる方がお使い下さい。
    :
このページのトップへ移動します。 1.マウスのイベントを無効にしカーソルを非表示に設定・移動範囲を制限
よく、非表示にした、だけで使用されているのを見かけますが、非表示にしてもクリックイベントは発生し、見えないだけで、通常通り使用できます。
そこで、マウスの移動範囲制限用APIを使い、マウスカーソルを1点に固定する事で、マウスのイベントを無効にしています。
取り扱い方次第でマウスイベントが無効のままに、なりますので注意して下さい。


Option Explicit   'SampleNo=104  2002.05.19

'マウスカーソルの移動範囲を制限する(P384)
Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long

'クライアント座標からスクリーン座標に交換する(P514)

Private Declare Function ClientToScreen Lib "user32" _
    (ByVal hwnd As Long, lpPoint As POINTAPI) As Long

'マウスカーソの移動範囲取得する(P386)
Private Declare Function GetClipCursor Lib "user32" (lprc As RECT) As Long

'カーソルを表示・非表示にする(P390)
'0以上の時表示  0未満の時非表示
Private Declare Function ShowCursor Lib "user32" _
    (ByVal bShow As Long) As Long

'座標の構造体
Private Type POINTAPI
  X As Long
  y As Long
End Type

'移動範囲の構造体
Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

Private LookOff As RECT  '構造体用変数


Private Sub Form_Load()
  '初期値の取得
  GetClipCursor LookOff
End Sub

Private Sub Command1_Click()
'マウスカーソルの移動範囲を制限し、非表示に
  Dim MoLook As RECT
  Dim LookPo As POINTAPI
  ClientToScreen Me.hwnd, LookPo
  '移動範囲を設定(何も貼り付けていない所)
  MoLook.Left = LookPo.X + 10
  MoLook.Top = LookPo.y + 10
  MoLook.Right = LookPo.X + 10
  MoLook.Bottom = LookPo.y + 10
  'マウスカーソルを非表示
  sMouseVisible False
  'マウスカーソルをロック
  ClipCursor MoLook
End Sub

Private Sub Command2_Click()
'マウスカーソルの移動範囲を解除し、表示する
  'マウスカーソルのロック解除
  ClipCursor LookOff
  'マウスカーソルを表示
  sMouseVisible True
End Sub

Private Sub Form_Unload(Cancel As Integer)
'念のため終了時に初期値に戻す。
  ClipCursor LookOff
  sMouseVisible True
  Unload Me
End Sub

Private Sub sMouseVisible(ByVal MoOnOff As Boolean)
'マウスカーソル表示・非表示用プロシージャ
  'マウスの表示・非表示の設定
  Dim flglook As Boolean
  Dim ret As Long
  flglook = MoOnOff
  ret = ShowCursor(flglook)
  'カウント過剰UPの防止
  Do While ret <> flglook
    If ret < -1 Then
      flglook = True
    ElseIf ret > 0 Then
      flglook = False
    End If
    ret = ShowCursor(flglook)
  Loop
End Sub


マウスカーソルの表示カウントは−1か0より変化しない状態で使って下さい
マウスロックの状態で終了するとマウスが使えなくなりますので十分注意して下さい
ご使用の場合エラー処理を実施して下さい。

このページのトップへ移動します。 2. 


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
マウスカーソルの移動範囲を制限するAPI  座標をスクリーン座標に変換用API  マウスカーソルの移動範囲取得用API  マウスカーソルの表示カウントを変更するAPI
マウスを一点に固定して非表示にする事で実現



このページのトップへ移動します。