【发布时间】:2013-04-12 08:34:06
【问题描述】:
根据MSDN wparam 应该保存密钥代码。问题是,按shift的时候,code是16(VK_SHIFT),但是我需要区分VK_LSHIFT和VK_RSHIFT。
对于 VK_CONTROL,似乎有一种解决方法:
if(wParam == VK_CONTROL) {
if ( lParam&EXTENDED_KEYMASK )
wParam = VK_RCONTROL;
else
wParam = VK_LCONTROL;
}
但是,这对 VK_SHIFT 不起作用:
if(wparam == VK_SHIFT) {
if ( lParam&EXTENDED_KEYMASK )
wParam = VK_RSHIFT;
else
wParam = VK_LSHIFT;
}
在后一个例子中,它总是假设 LSHIFT。
【问题讨论】:
-
已经有一段时间了,但据我所知,旧系统无法区分左移或右移键。
-
只有
GetKeyState()和GetAsyncKeyState()会区分左右按键(来自 WinUser.h)。