2014-01-24 65 views

回答

4

掃描代碼是在根據WM_CHAR文檔位lParam參數的16-23,所以只移位和掩模:

int scanCode = (lParam >> 16) & 0xff; 

如果你已經有了一個字符,你可以調用OemKeyScan,這使掃描碼在低字節:

char c='X'; 
int scanCode=OemKeyScan(c) & 0x0ff; 
+0

但如何做到這一點,如果沒有lParam的(如果不是在WndProc中)?如何將char轉換爲掃描碼? – Romka

+0

WndProc中總是有一個'lParam'(http://msdn.microsoft.com/en-us/library/windows/desktop/ms633573(v=vs.85).aspx)。你可以通過WM_CHAR捕獲所以只要看看參數。 – Sean

+0

我的意思是如果我在std :: getchar()中得到char。不在WndProc中。在WndProc工作正常 – Romka