我建了一个对话框,上有一个按钮,可是对话框接受不到WM_KEYDOWN消息。移去按钮就行了,如何解决?为什么上下左右键按下没有WM_KEYDOWN消息?

解决方案 »

  1.   

    有按钮,输入焦点就在按钮上面了. 用SetFocus转移输入焦点...因为上下左右被要来dialog用来改变当前控件去了,譬如dialog上面有2个按钮,用方向健可以换当前按钮。解决方法,OnPreTranslateMessage 里面拦截WM_KEYDOWN消息,判断是否是方向健。
      

  2.   

    好像只要有控件,就不能得到WM_KEYDOWN,确定和取消也不例外。不过你可以用
    BOOL CVKeyDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if (pMsg->message == WM_KEYDOWN)
    {
    m_vKey = pMsg->wParam ;
    UpdateData(FALSE);
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    拦截WM_KEYDOWN事件。
      

  3.   

    被父窗口截住了,没有转发。要转发消息,需要自己处理。
     zhouyong0371(小周周) 的做法就能实现转发了。
      

  4.   

    PreTranslateMessage 里面拦截WM_KEYDOWN消息
      

  5.   

    zhouyong0371(小周周) 今天很活跃呀
      

  6.   

    zhouyong0371(小周周) 最近几天很活跃呀