-1

私がやろうとしていることは非常に簡単です。移動またはクリックしない場合、1 秒後にマウス カーソルを非表示にしたいと考えています。

検索したところ、誰かが WM_MOUSEMOVE の使用を推奨しているのを見ました。ただし、私のアプリでは、WM_MOUSEMOVE は単に、マウスがクライアント領域にあるかどうかの検出です。そうである場合、アプリは継続的に WM_MOUSEMOVE を受け取ります。MSDN ページを読みましたが、まだ混乱しています。

4

2 に答える 2

1

WM_SETCURSOR を使用します。

カーソル関連の作業には WM_SETCURSOR を使用します。このメッセージはそのために作られています。クライアント領域についての言及は、おそらくSetCaptureAPI も使用する必要があることを示唆しています。

別の方法 (またはより現代的な方法) を使用することTrackMouseEventです。WM_MOUSEHOVERを提供します。

于 2012-11-29T17:37:49.860 に答える
0

推奨事項は正しいです。必要なことは、タイマーを定義することです (たとえば、WM_TIMER メッセージをトリガーするもの)。最初のマウス移動 (WM_MOUSEMOVE) でアクティブにします。タイマーに定義した間隔内にマウスの動きが発生しない場合は、WM_TIMER イベントが発生し、マウスを非表示にすることができます。

WM_MOUSEMOVE イベントが発生するたびに、(専用 API を使用して) タイマーを再起動するだけです。WM_MOUSEMONVE イベントがタイマーの期限切れを防ぐようにします。WM_MOUSEMOVE が到着しなくなった場合 (マウスをもう動かさないため)、タイマーは経過して起動するまで割り込みなしで動作します。

于 2012-11-29T16:49:03.073 に答える