0

DirectInput には、排他的なマウス/キーボード アクセスを持つオプションがありました。私は現在 DirectInput の使用から離れており、winapi を使用するだけで同じ動作を実現するにはどうすればよいか疑問に思っていましたか?

編集: SetCursorPos() をウィンドウの中央に使用して、ShowCursor() でカーソルを非表示にできると思います

4

3 に答える 3

1

マウスの場合は、Windows の raw 入力 API を使用します。

RegisterRawInputDevices の呼び出しには、RAWINPUTDEVICE 構造体でフラグ RIDEV_CAPTUREMOUSE を使用します。これにより、マウス クリックで他のウィンドウがアクティブになるのを防ぐことができます。それと組み合わせて、ShowCursor 関数を使用してマウス カーソルを非表示にします。これらの 2 つのことは、DirectInput 専用マウスの動作を再現します。それ以降のリビジョンでは、DirectInput (キーボードとマウス用) は生の入力 API の単なるラッパーです。

キーボードに同等のコントロールがあるとは思いません (また、DirectInput にもあったとは思いません)。ただし、ユーザーは入力フォーカスを別のコントロールに移すことができないため、これは一般的に問題ではありません。特に alt-tab または ctrl-alt-dlt を使用したい場合を除きます。

于 2014-03-28T20:01:13.593 に答える
0

ClipCursor()ウィンドウの四角形など、画面の特定の四角形内にマウスを制限するために使用します。

于 2013-01-14T22:37:43.657 に答える
0

SetCapture()を見たことがありますか?

あなたの質問がより明確であると助かります。アプリへのマウス入力 (つまり、WM_MOUSEMOVE メッセージ) の欠如は、通常、アプリが堅牢であるものです。結局のところ、マウスが完全に静止している場合、そのようなメッセージは生成されません。ですから、あなたは少し変わったことをしていると思います。

アプリのウィンドウから出るマウスを追跡するメカニズムもあります -こちらを参照してください。少し面倒な TrackMouseEvent 構造を設定する必要がありますが、私の経験ではすべてうまくいくようです。実際にアプリを一時停止しているのはこのメカニズムなのだろうか?

提供された情報については、それ以上のことはできません。

于 2013-01-14T05:54:00.893 に答える