2012-06-08 78 views
0

一些朋友和我開始製作視頻遊戲。我對Windows api相當陌生,並且爲我們的早期階段做了一些原型設計,我需要知道如何解析通過windows消息系統給出的輸入。我需要做的主要事情是以按鍵的形式從鍵盤獲得輸入。任何想法如何分析winProc函數中的lParam和wParam來查找被按下的鍵?如何獲得與Windows API輸入

回答

2

WM_KEYDOWNwParam The virtual-key code of the nonsystem key.

WM_CHARwParam The character code of the key.

後者是非常簡單的,而前者可以在這裏引用:Virtual Key Codes

假設您正在尋找退出按鍵。在該表中,可以看到VK碼是0x1B,但它有一個別名VK_ESCAPE

case WM_KEYDOWN: 
    if (wParam == VK_ESCAPE) { 
     //handle 
    } 

    break; 

隨你挑,這取決於你需要處理什麼樣的鑰匙。

+0

所以如果我想使用WM_CHAR我會做: '情況WM_CHAR: 如果(wParam中== 'W'){// 處理 } 突破;」 – Hallucigenia95

+0

@isanoob,這應該工作。但是,在調度它之前,必須在消息循環中調用['TranslateMessage'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms644955(v = vs.85).aspx)。無論如何,你應該養成一直這樣做的習慣。如果字符是你所需要的,那麼在'WM_KEYDOWN'之上使用'WM_CHAR'通常會更容易。此外,碰巧字母鍵的虛擬鍵碼是它們的大寫ASCII等價物('a'和'A'(相同的鍵)都是65(0x41))。 – chris

+0

我一定會記住,但Visual C++ Win32項目會自動創建它。如果我沒有它,我會努力克服那種習慣。 – Hallucigenia95