getkeynametext
场景:GetKeyNameText 使用 VirtualKey, 怎么判断扩展键
GetKeyNameText 使用 VirtualKey, 如何判断扩展键?
int scanCode = MapVirtualKey(VK_NUMLOCK, 0);
DownlParam = 0;
DownlParam |= 0x0001; //0-15 repeat count
DownlParam |= scanCode << 16; //16-23
DownlParam |= (flags & 0x0F) <<24; //24,25 flags 如何确定
nRetVal = GetKeyNameText(DownlParam, szBuf, 100);
GetKeyNameText 需要的是扫描码,
MapVirtualKey 可以把VirtualKey 转换成扫描码, 但是对于扩展键(Extended-key)没办法区别开来
比如VK_NUMLOCK 经过 GetKeyNameText 可能是 "Pause"
如何判断一个VirtualKey是否为扩展键(Extended-key)?
或者有其他方法把VirtualKey转换成字符串(KeyNameText)?
------解决方案--------------------
键盘消息中的VirtualKey对于基本键和扩展键都是相同,做个小程序调试一下就可以验证出来,关掉Num Lock之后,按小键盘与其对应的扩展键得到的wParam都是相同的,例如8和向上箭头都等于VK_UP。
你这里的VirtualKey是如何得到的?
------解决方案--------------------
http://www.codeproject.com/KB/tips/getacceltext.aspx
GetKeyNameText 使用 VirtualKey, 如何判断扩展键?
int scanCode = MapVirtualKey(VK_NUMLOCK, 0);
DownlParam = 0;
DownlParam |= 0x0001; //0-15 repeat count
DownlParam |= scanCode << 16; //16-23
DownlParam |= (flags & 0x0F) <<24; //24,25 flags 如何确定
nRetVal = GetKeyNameText(DownlParam, szBuf, 100);
GetKeyNameText 需要的是扫描码,
MapVirtualKey 可以把VirtualKey 转换成扫描码, 但是对于扩展键(Extended-key)没办法区别开来
比如VK_NUMLOCK 经过 GetKeyNameText 可能是 "Pause"
如何判断一个VirtualKey是否为扩展键(Extended-key)?
或者有其他方法把VirtualKey转换成字符串(KeyNameText)?
------解决方案--------------------
键盘消息中的VirtualKey对于基本键和扩展键都是相同,做个小程序调试一下就可以验证出来,关掉Num Lock之后,按小键盘与其对应的扩展键得到的wParam都是相同的,例如8和向上箭头都等于VK_UP。
你这里的VirtualKey是如何得到的?
------解决方案--------------------
http://www.codeproject.com/KB/tips/getacceltext.aspx