USB扫码枪为即插即用,通过类似键盘的方式和系统进行交互,在MFC中进行处理比较方便,对键盘消息进行处理即可。
(1)文本框输入获取焦点,扫描后自动显示在文本框内。
(2)在PreTranslateMessage中对消息进行处理获取扫码数据。
使用第二种方式对接收到的一个个键盘数值的处理。
我的扫码枪设置后扫码的情况举例如下:
(1)在大写字母前发送shift的虚拟码16
(2)第二功能键发送shift加对应的虚拟码
(3)结束发送键盘码为13 40
如:16 187 对应的为键盘的+,ASCII码为43
16 65 对应的为键盘的A ,ASCII码为65
需要处理shift对应的大小写问题,以及第二功能键的特殊处理;
switch(pMsg->message)
{
case WM_KEYDOWN:
vkCode = pMsg->wParam;
if (vkCode >= 65 && vkCode <= 90)
vkCode = vkCode + 32;//处理为小写字母
if (m_chLast == 16)
{
if (vkCode >= 48 && vkCode <= 57)
{
if(vkCode==48)