Onchar()和OnKeyDown()一样,都是父窗口的消息映射,好像都不响应Edit框的键盘输入。救命啊~~~~~

解决方案 »

  1.   

    PreTranslateMessage中,截获KeyDown,然后只处理你需要的字符。
      

  2.   

    to: bob_yan(小保)
    能说详细点吗?多谢!
      

  3.   

    BOOL CXXXXXXX::PreTranslateMessage(MSG* pMsg)
    {
            // TODO: Add your specialized code here and/or call the base class
            int nVirtKey;
            if(pMsg->message == WM_KEYDOWN)
            {
                    nVirtKey=(int)pMsg->wParam;
                   nVirtKey是按入的键值,在十六进制范围内就return FALSE,否则return TRUE,不做消息分派 
                   .................
             }
    }
      

  4.   

    重载父窗口的PreTranslateMessage函数,来截获WM_KEYDOWN事件
    BOOL CDialog::PreTranslateMessage(LPMSG pMsg)
    {
        if (pMsg->message == WM_KEYDOWN &&
            pMsg->hwnd == m_Edit.GetSaftHwnd())
        {
           ....
           //pMsg->wPara是按键的ASCII,
           //可在此处理你需要的字符
        }
    }