我派生一个CWnd的类,可是当它获得焦点后只能接收nChar为VK_A 至VK_Z 的键盘消息void CExamBaseWnd::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
switch (nChar)
{
case VK_LEFT:
MessageBox("left");
break;
case VK_RIGHT:
break;
default:
if ( (nChar >= _T('a') && nChar <=_T('z')) CWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}int CExamBaseWnd::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
{
SetFocus();
return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
}
{
switch (nChar)
{
case VK_LEFT:
MessageBox("left");
break;
case VK_RIGHT:
break;
default:
if ( (nChar >= _T('a') && nChar <=_T('z')) CWnd::OnKeyDown(nChar, nRepCnt, nFlags);
}int CExamBaseWnd::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
{
SetFocus();
return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
}
会的请帮帮忙回答,谢谢!
它们是作用在对话框上的其它控件上。
比如enter,esc 的系统会自己处理不会在转个你的就要到pretranslateMessage中去处理
重载 CDialog 并将你的对话框的设为你自己的 CExDialog.
在 CExDialog 中取消对 VK_LEFT 和 VK_RIGHT VK_UP VK_DOWN 等的按键消息.