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