如果用vc建立一个基于对话框的工程,为对话框添加WM_KeyDown的响应函数,代码如下,
void CHomeKeyDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CString str;
switch(nChar)
{
case VK_LEFT:
str="向左键";
break;
case VK_RIGHT:
str="向右键";
break;
case VK_UP:
str="向上键";
break;
case VK_DOWN:
str="向下键";
break;
case VK_HOME:
str="home键";
break;
default:
str="其他键";
} MessageBox("您按下了"+str,MB_OK);
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
但是当按向下或其他方向键时没反应,当按home键是有对话框弹出,其他键也有反应。
如果建立一个单文档的工程,在view下添加WM_KeyDown消息响应函数,如下
void CHomeKey2View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CString str;
switch(nChar)
{
case VK_LEFT:
str="向左键";
break;
case VK_RIGHT:
str="向右键";
break;
case VK_UP:
str="向上键";
break;
case VK_DOWN:
str="向下键";
break;
case VK_HOME:
str="home键";
break;
default:
str="其他键";
} MessageBox("您按下了"+str,MB_OK);
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
这时就完全正常了,不知道是什么原因。
void CHomeKeyDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CString str;
switch(nChar)
{
case VK_LEFT:
str="向左键";
break;
case VK_RIGHT:
str="向右键";
break;
case VK_UP:
str="向上键";
break;
case VK_DOWN:
str="向下键";
break;
case VK_HOME:
str="home键";
break;
default:
str="其他键";
} MessageBox("您按下了"+str,MB_OK);
CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}
但是当按向下或其他方向键时没反应,当按home键是有对话框弹出,其他键也有反应。
如果建立一个单文档的工程,在view下添加WM_KeyDown消息响应函数,如下
void CHomeKey2View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CString str;
switch(nChar)
{
case VK_LEFT:
str="向左键";
break;
case VK_RIGHT:
str="向右键";
break;
case VK_UP:
str="向上键";
break;
case VK_DOWN:
str="向下键";
break;
case VK_HOME:
str="home键";
break;
default:
str="其他键";
} MessageBox("您按下了"+str,MB_OK);
CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
这时就完全正常了,不知道是什么原因。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货