2011-08-10 17 views
0

は、私のようなシステムを使用します。小文字の文字やなどの特殊文字のために仕事をdoesntのユーザーのキーボード入力を読み取る方法は?現時点で

case WM_KEYDOWN: 
keys[wParam] = true; 

「&」、そうイムの提示は、私はいずれかを得ることができるキーボードを読み込むためのWINAPI機能がありますユーザーからの8ビットの文字彼は書いている場合、「AEは」私は、この表にそのcharの対応するインデックスを取得します:

enter image description here

(症例画像で作業していない:http://img801.imageshack.us/img801/1965/asciipage.png

私のOpenGLアプリケーションでこのテーブルを使ってテキストをレンダリングするので、このテーブルから、ユーザのキーボードが私のプログラムのチャットラインにどのキャラクタを生成したかを知る必要があるので、私のゲームでチャットをしようとしています。

+0

テーブルは、文字コード<32以外のWindows ANSI西洋文字セットに似ています。それはWindows ANSI Westernであることを意味しますか? –

+0

私はそれが 'iso-8859-1'であるべきだと思っています。それはWM_CHARを使用する以下の答えで重要ですか? – Rookie

+0

私は制御文字にとっては重要ではないと考えています(ただし、これらは改行、バックスペース、タブ、エスケープを含みます)。ユーロ通貨記号、€。例えば、 yは上に2つの点がある。さらに、Latin-1には、Windows ANSI Westernの行全体が2行含まれていませんが、通常、これらの文字はキーボードでは直接利用できません。 –

答えて

4

完全に翻訳された文字コードを提供するWM_CHARメッセージがあります。あなたのメッセージループは、TranslateMessageの前にDispatchMessageを使用して、プロキーパーのキーコードから文字への変換を行う必要があります。

+0

は完全に機能するようです。私は制御文字がそこにも "可視"であることに気づいたので、解決策は32以下のすべてを無視することだと思います。 – Rookie

+0

VK_DELETEなどの列挙型に一致する制御文字のリストがありますか? (VK_DELETEは、WM_CHARがdeleteを押して与えるのと同じcharではありません)。どのような方法で制御文字を処理する必要がありますか?編集:実際に私はこのすべてからVK_DELETEメッセージを取得することはできません...しかし、VK_BACKなどの他のものは、WM_CHAR値に一致しません。どのように私はWM_CHARメッセージハンドラの削除ボタンを処理することができますか、それとも可能ですか? – Rookie

関連する問題