2011-01-21 13 views
1

C++でwinapiを使用してマウスの状態(位置、ボタンの状態)を取得する方法はありますか? 私はウィンドウメッセージ(WM_MOUSEMOVE、WM_LBUTTONDOWNなど)を使いたくありません。マウスの状態winapi

ありがとうございました!

+0

あなたはそれらを使用したくないなどですか? – user963241

答えて

2

GetCursorInfoGetKeyStateを探しているようです。後者はvirtual key codesと呼ばれ、関心のあるマウスボタンを指定します。

+1

ありがとうございました!それはうまく動作します:) – Felics

1

カーソル位置のみが必要な場合は、GetCursorPos()を使用できます。 GetCursorInfo()とGetCursorPos()は画面座標を返します。 ScreenToClient()を使用してクライアント領域のオフセットに変換します。

OPはWindowsメッセージを使用したくなかったが、私はちょうど脇役として何かを言いたかった。私が見つけた
何かが(インスタンスWM_SETCURSOR用)メッセージハンドラの一部としてカーソル位置を取得するということでした、文学のほとんどは、メッセージが送信された時点で、カーソルの位置を取得するために)(GetMessagePosを使用することをお勧めします。しかし、の位置はの前に移動しました。したがって、マウスオーバー検出を領域上で試行しようとすると、位置がピクセルの後ろに「遅れ」ます。

+2

私は個人的にWOW64の下で64ビットVista(おそらく64ビットXP)のバグのために 'GetCursorPos'を呼び出さないようにしています。渡すポインタが高アドレス空間(> 2GB)にあるとき、関数は失敗します。これはWindows 7で修正されていますが、どこでも動作するため、 'GetCursorInfo'が好きです。 –

+0

優れた観察。私はこれを私のメモに加えています。これらのうちの1つは、デバッグ中のキーボードのようなものです。 – CoreyStup

関連する問題