2011-07-23 7 views

答えて

2

RegisterRawInputDevicesを意味しますか?

WM_INPUTメッセージを受信するには、RAWINPUTDEVICE構造体にHWNDを指定する必要があるため、ウィンドウなしでこれを行うことはできません。

コンソールアプリケーションではウィンドウを作成できますが、ウィンドウにはおそらくWM_INPUTが表示されますが、ウィンドウは必要です。

+0

はい、これが私の意図です。 RAWINPUTDEVICEはhwndTargetがアクティブなウィンドウの次にNULLのため動作するようですが、WM_INPUTメッセージを取得するにはWindowProcが必要です。 –

+0

@Adam:NULLの 'hwndTarget'が許されるかもしれませんが、それは"スレッドに送る "という意味ではありません。 'PostMessage'。ウィンドウを持っていなければ、アクティブなウィンドウがなく、 'WM_INPUT'メッセージは出ません。 –

6

それ、私はそれをやった方法(わからない、それは最も快適な方法です...):

私は(私の入力バッファを充填する作業のための)スレッドを開始しました。 このスレッドでは、適切なウィンドウクラスを持つメッセージ専用ウィンドウ(その隠された入力データを得ることができます)を作成しました。

次に、生の入力デバイスを登録しました。

このスレッドには独自のメッセージハンドラループがあります。 ウィンドウクラスのWindowProcでは入力を処理しました。

(バッファのために、あなたはブーストを使用することができます:circular_bufferは、それがROCKS!:D)あなたが必要でした。このソリューションでは

は、ウィンドウを持っていますが、あなたがいないように見えます。 :)

私はこれが助けてくれることを願っています。

+0

良い提案。 – jnm2

+0

私はこのためのサンプルコードがないと思いますか? –

関連する問題