为什么在CView类中可以对ON_CHAR进行相应,添加消息处理函数onchar就可以了,但是在CDialog中要对ON_CHAR相应,直接添加不行?
CView相当于Text控件,你可以在Text控件里输入文字,因为Dialog对象没有办法直接获取到一个焦点(Focus),就象你没有办法单击某应用程序标题栏,然后改变他的标题。
需要重写PreTranslateMessage函数,拦截消息,你写的代码都不用改变,加上下面的
BOOL CMyDialog::PreTranslateMessage(MSG* pMsg) {
if(pMsg-> == WM_CHAR)
OnChar((TCHAR)pMsg->wParam,0,0);//后面两个参数根据你的情况而定
return CView::PreTranslateMessage(pMsg);//不能少
}
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240825082459112-376424429.jpg)