2011-08-10 77 views
0

目前我使用的系統,如:如何閱讀用戶的鍵盤輸入?

case WM_KEYDOWN: 
keys[wParam] = true; 

這爲小寫字母或特殊字符,如不工作「&」,那麼IM問的是有沒有WINAPI函數讀取鍵盤,所以我可以得到任何從用戶的8位字符,如果他寫道:「AE」我會得到相應的指數在該表中字符:

enter image description here

(在圖像的情況下不工作:http://img801.imageshack.us/img801/1965/asciipage.png

我使用此表在我的OpenGL應用程序中呈現文本,所以我需要從此表中找到用戶鍵盤生成的哪個字符到我的程序聊天行,所以即時嘗試在我的遊戲中進行聊天。

+0

您的表格看起來像Windows ANSI西文字符集,但字符代碼<32。它是否意味着Windows ANSI Western? –

+0

我認爲它應該是'iso-8859-1',即時通訊並不完全確定。這與使用WM_CHAR的下面的答案有關係嗎? – Rookie

+0

我認爲這對於控制字符來說並不重要(注意這些字符包括換行符,退格符,製表符和轉義符),但它對於例如歐元貨幣符號€。和例如在頂部有兩個點的y,ÿ。另外Latin-1缺少兩行Windows ANSI Western行,但這些字符通常不能直接在鍵盤上使用。 –

回答

4

有WM_CHAR消息給你完全翻譯的字符代碼。在DispatchMessage之前,您的消息循環必須使用TranslateMessage作爲字符轉換的propper鍵碼。

+0

似乎完美。我注意到控制字符在那裏也是「可見的」,所以我想解決方案是忽略32以下的所有內容。 – Rookie

+0

是否存在一些與VK_DELETE等枚舉相匹配的控制字符列表? (VK_DELETE與WM_CHAR通過按下刪除所提供的字符不同)。或者我應該使用什麼方法來處理控制字符?編輯:實際上,我不能從這個得到VK_DELETE消息...但其他如VK_BACK不匹配WM_CHAR值。所以我怎麼能處理WM_CHAR消息處理程序中的刪除按鈕,或者它甚至可能? – Rookie