BOOL CVendDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYDOWN && pMsg->hwnd != NULL){
switch(pMsg->wParam){
case VK_UP:
IFB_SWON(pIFB, IDC_STATIC_CoffeMade01);
break;
case 0x32:
IFB_SWON(pIFB, IDC_STATIC_CoffeMade02);
break;
case 0x33:
IFB_SWON(pIFB, IDC_STATIC_CoffeMade03);
break;
case 0x34:
IFB_SWON(pIFB, IDC_STATIC_CoffeMade04);
break;
default:
break;
}
}
if(pMsg->message == WM_KEYUP && pMsg->hwnd != NULL){
switch(pMsg->wParam){
case VK_DOUP:
IFB_SWOFF(pIFB, IDC_STATIC_CoffeMade01);
break;
case 0x32:
IFB_SWOFF(pIFB, IDC_STATIC_CoffeMade02);
break;
case 0x33:
IFB_SWOFF(pIFB, IDC_STATIC_CoffeMade03);
break;
case 0x34:
IFB_SWOFF(pIFB, IDC_STATIC_CoffeMade04);
break;
default:
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}上面这段代码的功能是通过响应键盘的“up,2,3,4”分别代替对话框里的“IDC_STATIC_CoffeMade01,2,3,4”,这个时候这段代码是正常的,但是当我把“up”改成“1”的时候,一切就乱了,整体就都错了,原来正常的“2,3,4”的响应也都错了,我是百思不得其解啊,望有高手赐教!
{
if(pMsg->message == WM_KEYDOWN && pMsg->hwnd != NULL){
switch(pMsg->wParam){
case VK_UP:
IFB_SWON(pIFB, IDC_STATIC_CoffeMade01);
break;
case 0x32:
IFB_SWON(pIFB, IDC_STATIC_CoffeMade02);
break;
case 0x33:
IFB_SWON(pIFB, IDC_STATIC_CoffeMade03);
break;
case 0x34:
IFB_SWON(pIFB, IDC_STATIC_CoffeMade04);
break;
default:
break;
}
}
if(pMsg->message == WM_KEYUP && pMsg->hwnd != NULL){
switch(pMsg->wParam){
case VK_DOUP:
IFB_SWOFF(pIFB, IDC_STATIC_CoffeMade01);
break;
case 0x32:
IFB_SWOFF(pIFB, IDC_STATIC_CoffeMade02);
break;
case 0x33:
IFB_SWOFF(pIFB, IDC_STATIC_CoffeMade03);
break;
case 0x34:
IFB_SWOFF(pIFB, IDC_STATIC_CoffeMade04);
break;
default:
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}上面这段代码的功能是通过响应键盘的“up,2,3,4”分别代替对话框里的“IDC_STATIC_CoffeMade01,2,3,4”,这个时候这段代码是正常的,但是当我把“up”改成“1”的时候,一切就乱了,整体就都错了,原来正常的“2,3,4”的响应也都错了,我是百思不得其解啊,望有高手赐教!
如果改成“1(0x31)”那就都是只能响应到“KEY_UP”了。
如果不需要后面的CDialog::PreTranslateMessage(pMsg); 就在每块后面return true
看得清楚一点
也就是如果按数字键,KEY_DOWN时,接收不到正确的“wParam”,而KEY_UP时是可以的
昨天晚上睡觉的时候想到的,今天一试还真行,嘿嘿。
不过多谢“我是菜鸟”的关注,就把分给你了!