我建了一个对话框程序,然后用向导添加了OnChar来响应WM_CHAR然后在函数体里
添加了AfxMessageBox("ok");,按理说,我运行程序时,如果击键就应该弹出消息框啊,但为什么没有反应,跟进去看了下发现就没有执行到OnChar,不知道是为什么,是不是我漏了什么步骤 ,望大虾们解答一下.

解决方案 »

  1.   

    OnChar来响应WM_CHAR是在获得焦点的窗体里面,你的对话框没有响应,可能是当前获得焦点的窗体不是对话框,而是对话框中的某个控件窗体
      

  2.   

    对话框上面没有任何控件,就是用向导新建的对话框,直接添加了OnChar,就是没反应
      

  3.   

    我删除了所有控件还是不行,不过响应WM_KEYDOWN却是可以的。
      

  4.   

    直接获得对话框焦点好象不行,直接用这种方法也就是不行了,你可以响应PreTranslateMessage(MSG* pMsg),通过判断对话框ID来进行你要的操作了
      

  5.   

    当然了,WM_KEYDOWN是响应的,因为它并不要求获得焦点才响应,只要一按下键盘就能够响应这个消息
      

  6.   

    谢谢楼上各位,难道就不能直接响应OnChar,非要通过PreTranslateMessage(MSG* pMsg)才可以吗
      

  7.   

    恩  重载的时候你判断pMsg->message是否是你需要响应的字符
    或在你需要响应的字符范围内
    是就处理~~~