2014-01-24 40 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