我在CDialog里响应了WM_KEYDOWN消息。
但是它不触发为什么?

解决方案 »

  1.   

    在OnInitDialog中加入this->SetFocus();然后return FALSE试一下,我可以的
      

  2.   

    看下面代码:
    BOOL CYourDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class  if(pMsg->message==WM_KEYDOWN )
      {
        SendMessage(pMsg->message, pMsg->wParam, pMsg->lParam);
        return TRUE;
      }
      return CDialog::PreTranslateMessage(pMsg);
    }
      

  3.   

    我没有用PreTranslateMessage我是直接用WM_KEYDOWN的响应函数的
      

  4.   

    不过我现在用PreTranslateMessage也可以的呀不过我的对话框里没有一个控件,是不是控件的原因
      

  5.   

    用这个,CDialog拦住了KEYDOWN事件PreTranslateMessage(MSG* pMsg) 
    {
    switch (pMsg->message)
    {
    case WM_KEYDOWN:
    switch (pMsg->wParam)
    {
    case VK_UP:
    MessageBox("UP","msg",MB_OK);
    break;
    case VK_DOWN:
    MessageBox("DOWN","msg",MB_OK);
    break;
    case VK_LEFT:
    MessageBox("LEFT","msg",MB_OK);
    break;
    case VK_RIGHT:
    MessageBox("RIGHT","msg",MB_OK);
    break;
    default:
    break;
    }
    case WM_KEYUP:
    break;
    default:
    break;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }