MFC 基于对话框 使用OnChar时无响应

很多人说重载PreTranslateMessag,加入SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);retur... 很多人说重载PreTranslateMessag,加入
SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);
return 0;
但是这样一来我写的界面出现了很多问题,想问问有没有其他办法,响应onchar,或者其他方法响应键盘消息。
我现在用的是VS2010写的是打字测速软件,如果有基于对话框的源码就更好了,谢谢了!!
展开
 我来答
yanpongchen
2013-08-20 · TA获得超过100个赞
知道答主
回答量:94
采纳率:0%
帮助的人:68万
展开全部
对话框时不相应WM_CHAR消息的,所以你重载OnChar函数时,对话框是不会调用这个函数的,如果你要让对话框相应WM_CHAR消息的话,你必须先从重载PreTranslateMessage函数,在函数里把WM_CHAR消息发送给对话框。这样对话框就能响应WM_CHAR消息啦。
追问
现在可以响应消息了,但是我又遇到一个问题,怎么对比CString,我把一篇文章定义在一个CString中,当我输入的字符定义在另一个CString中,如何在输入的时候一个一个对比,正确才输出呢?
追答
CString类不是有一个Find的函数么,你可以用它去查找啊,好像是找到就返回字符串的初始索引,找不到就返回-1.你可以去查看哈。 如果有什么事要及时回答你的话可以加我QQ,因为我这几天有点忙,可能不能查考百度知道信息。976727509
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
12hget
2015-11-05 · 超过12用户采纳过TA的回答
知道答主
回答量:85
采纳率:100%
帮助的人:7.4万
展开全部
MFC中,基于对话框的程序如何响应OnChar呢:对话框是不会响应OnChar和OnKeyDown消息的,会被 其它控件拦截 试时发现不会进入这两个函数,必须重定义PreTranslateMessage()虚函数才能正确地进入这两个...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
任明星Ming
2013-08-20 · TA获得超过798个赞
知道小有建树答主
回答量:1061
采纳率:100%
帮助的人:1153万
展开全部
你捕获OnChar是在CEdit控件里吗?如果是在edit控件里,应该都可以捕获得到OnChar消息。
更多追问追答
追问
不是,我是直接显示在对话框中的,现在重载了PreTranslateMessag,可以打字了,但是当我按开始按钮后无法打字了,是不是消息之间的冲突?不晓得怎么解决
追答
你点击开始按钮后,焦点跑到按钮上去了。所以你的窗口没有接收到WM_CHAR的消息。
当点击完按钮后,将焦点重新设置到窗口上试试。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式