mouse_event

https://msdn.microsoft.com/ja-jp/library/cc429946.aspx https://msdn.microsoft.com/ja-jp/library/cc429946.aspx https://msdn.microsoft.com/ja-jp/library/cc429946.aspx

マウスの移動やマウスボタンのクリックを合成します。

Windows NT/2000:この関数は、SendInput 関数にとって代わられました。SendInput 関数を使ってください。

VOID mouse_event(
  DWORD dwFlags,         // 移動とクリックのオプション
  DWORD dx,              // 水平位置または移動量
  DWORD dy,              // 垂直位置または移動量
  DWORD dwData,          // ホイールの移動
  ULONG_PTR dwExtraInfo  // アプリケーション定義の情報
);

パラメータ

dwFlags
マウスの移動とマウスボタンのクリックのさまざまな動作を指定します。次のフラグのうち、意味のある組み合わせを指定します。
意味
MOUSEEVENTF_ABSOLUTEdx dy の各パラメータは、正規化された絶対座標を意味します。このフラグを指定しなかった場合、これらのパラメータは相対データ、つまり最後に報告された位置からの変化量を意味します(dx dy は微分の記号ではなく、差分;differential、つまり変化量を意味します)。マウスや他のどのポインティングデバイスがシステムに接続されている場合でも、このフラグを指定することも、指定しないこともできます。マウスの相対的な移動については、この関数の「解説」を参照してください。
MOUSEEVENTF_MOVEマウスが移動したことを示します。
MOUSEEVENTF_LEFTDOWN左ボタンが押されたことを示します。
MOUSEEVENTF_LEFTUP左ボタンが離されたことを示します。
MOUSEEVENTF_RIGHTDOWN右ボタンが押されたことを示します。
MOUSEEVENTF_RIGHTUP右ボタンが離されたことを示します。
MOUSEEVENTF_MIDDLEDOWN中央ボタンが押されたことを示します。
MOUSEEVENTF_MIDDLEUP中央ボタンが離されたことを示します。
MOUSEEVENTF_WHEELWindows NT/2000:マウスにホイールが実装されている場合、そのホイールが回転したことを示します。移動量は、dwData パラメータで指定します。
MOUSEEVENTF_XDOWNWindows 2000:X ボタンが押されたことを示します。
MOUSEEVENTF_XUPWindows 2000:X ボタンが離されたことを示します。

マウスボタンの状態を示すフラグは、ボタンの状態が変化したことを示すものであり、その状態が続いていることを示すものではありません。たとえば、ユーザーが実際に左ボタンを押してそのまま押し続けている状況を想定すると、左ボタンを押した時点で MOUSEEVENTF_LEFTDOWN がセットされますが、それ以降にマウスを移動してもこの値はセットされません。同様に、ボタンを最初に離したときにのみ、MOUSEEVENTF_LEFTUP がセットされます。

注意  dwFlags パラメータで MOUSEEVENTF_WHEEL を指定した場合、それに加えて MOUSEEVENTF_XDOWN または MOUSEEVENTF_XUP を指定することはできません。これらの各値は、mouseData フィールドを使う必要があり、共存できないからです。

dx
dwFlags パラメータで MOUSEEVENTF_ABSOLUTE フラグを指定した場合、x 軸でのマウスの絶対座標を指定します。それ以外の場合は、直前のマウスイベントが発生した後の移動量を指定します。絶対座標を使う場合、マウスの実際の x 座標を指定します。相対データは、移動量のミッキー数で指定します。「ミッキー」とは、記録可能なマウスの最小の移動量のことですが、単位は機種や設定によって異なり、1 ピクセルを 1 ミッキーとする OS や、1/100 インチ(0.25mm)を 1 ミッキーとする OS、またユーザーがピクセルとミッキーの比率を任意に設定できるアプリケーションもあります。ほかに、ユーザーがコントロールパネルの[マウス]でカーソル(マウスカーソル)の速度を指定する方法も、比率を変更することに相当します。ミッキーの詳細については、MSDN ライブラリの[検索]タブで「(" ミッキー " OR "mickey") AND (" マウス " OR "mouse")」を検索し、サンプルコードなどを参照してください。特に、Q193003 には 関数を使って比率を変更するサンプルコードが掲載されています。
dy
dwFlags パラメータで MOUSEEVENTF_ABSOLUTE フラグを指定した場合、y 軸でのマウスの絶対座標を指定します。それ以外の場合、直前のマウスイベントが発生した後の移動量を指定します。絶対座標を使う場合、マウスの実際の x 座標を指定します。相対データは、移動量のミッキー数で指定します。
dwData
dwFlags パラメータで MOUSEEVENTF_WHEEL フラグを指定した場合、ホイールの移動量を指定します。正の値はホイールが前方(ユーザーから離れた方向)へ、負の値はホイールが後方(ユーザーの方向)へ回転したことを示します。1 回のホイールクリックは、WHEEL_DELTA として定義されていて、この値は 120 です。

Windows 2000:dwFlags パラメータで MOUSEEVENTF_XDOWN または MOUSEEVENTF_XUP フラグを指定した場合 , dwData パラメータでどの X ボタンが押されたか離されたかを指定します。次のフラグの任意の組み合わせを指定します。

意味
XBUTTON1最初の X ボタンが押されたか離されたことを示します。
XBUTTON22 番目の X ボタンが押されたか離されたことを示します。

dwFlags パラメータで MOUSEEVENTF_WHEEL、MOUSEEVENTF_XDOWN、MOUSEEVENTF_XUP のどのフラグも指定していない場合は、dwData パラメータで 0 を指定してください。

dwExtraInfo
マウスイベントに関連付けられた 32 ビットの追加情報を指定します。アプリケーションは、GetMessageExtraInfo 関数を呼び出すと、この値を取得できます。

戻り値

戻り値はありません。

解説

マウスが移動した場合、MOUSEEVENTF_MOVE フラグがセットされてそのことが明示され、dx との dy の各パラメータは移動に関する情報を保持しています。この情報は、絶対座標または相対データを表す整数です。

MOUSEEVENTF_ABSOLUTE フラグを指定した場合、dx dy の各パラメータは 0~65,535 の範囲で、正規化された絶対座標を保持しています。イベントプロシージャは、これらの座標を表示サーフェスの座標へマップ(変換)します。座標 (0,0) は表示サーフェスの左上隅、(65535,65535) は表示サーフェスの右下隅へマップされます。

MOUSEEVENTF_ABSOLUTE を指定しなかった場合、dx dy の各パラメータの値は、直前のマウスイベントが発生した後の相対的な移動量を意味します。正の値は右(または下)への移動を示し、負の値は左(または上)への移動を示します。

マウスの相対的な移動量は、マウスの速度とアクセラレーション(加速;マウスを連続的に比較的大きく移動させた場合、カーソルを通常より大きく移動すること)レベルを設定することを意図しています。エンドユーザーは、コントロールパネルの[マウス]を使ってこれらの値を設定します。アプリケーションは、 関数を使って、これらの値の取得と設定を行えます。

システムはアクセラレーションを適用する際に、指定されたマウスの相対的な移動に対して 2 つのテストを実行します。x 軸または y 軸上で、指定された距離がマウスの最初のしきい値を超え、マウスのアクセラレーションレベルが 0 ではない場合、システムはこの距離を 2 倍にします。x 軸または y 軸上で、指定された距離がマウスの 2 番目のしきい値を超え、マウスのアクセラレーションレベルが 2 の場合、システムは、最初のしきい値テストを適用して得られた距離を 2 倍にします。その結果、x 軸または y 軸上で、相対量で指定されたマウスの移動量を最大 4 倍にすることがあります。

アクセラレーションを適用した後で、システムは得られた結果に、希望のマウス速度をかけます。マウス速度は 1(最も遅い)~20(最も速い)の範囲で指定でき、マウスの移動距離に応じてカーソルを移動する距離を表します。既定の値は 10 であり、これはマウスの移動に何も変更を加えないことを意味します。

mouse_event 関数は、アプリケーションでマウスイベントを疑似的に発生させたいときに使います。また、アプリケーションが通常の位置とボタンの状態より詳細な情報を取得する必要がある場合も、この関数を使います。たとえば、タブレットのメーカーが、ペンベースの情報を自社のアプリケーションへ渡すことを考えてみましょう。開発者は専用のダイナミックリンクライブラリ(DLL)を作成し、タブレットのハードウェアと直接の通信を行い、拡張情報を取得し、その情報をキューに格納します。その後、その DLL は mouse_event 関数を呼び出して、標準的なボタンデータと x/y の位置データに加えて、dwExtraInfo パラメータで、キュー内に存在している拡張情報へのポインタまたはインデックスを指定します。アプリケーションが拡張情報を必要とする場合、dwExtraInfo パラメータのポインタまたはインデックスを指定して DLL を呼び出し、DLL は拡張情報を返します。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用

参照

GetMessageExtraInfo,

表示: