我用evc开发扫描枪的程序
以下的代码中 VK_F1的时候按F1就能运行。但是改成VK_NUMPAD0后运行按0键就是不响应。有人能够告诉我怎么回事吗?
BOOL CCollectData::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case VK_F1:
C1 dlg;
dlg.DoModal();
break;
}
} return CDialog::PreTranslateMessage(pMsg);
}
只要是设置的数字键就都不响应,用WM_CHAR 也没有用
是的吧,我就是想当在对话框内点击数字键1的时候,跳出别的对话框。但是按F1的时候可以相应,按数字键的时候就是不响应。
用一个debug版本运行程序,在PreTranslateMessage()函数中trace 出消息ID,和消息的参数,然后按下数字键,看消息的ID和消息的参数,然后再针对这个消息去做操作,有可能按下数字键没有响应WM_KEYDOWN,而是WM_SYSKEYDOWN,你可以试试看
你可以去判别
lparam到底按下的是哪个键值,
如果是你要的键值就弹出你要的对话框,如果不是就不处理
我解决了
是我搞错了
扫描枪的键盘按键16进制是0x31,
我一开始以为是0x61
但是不支持VK_1,VK_'1',只能写进制