问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MFC中,基于对话框的程序如何响应OnChar呢?

发布网友 发布时间:2022-05-13 00:41

我来回答

1个回答

热心网友 时间:2023-11-21 21:36

对话框是不会响应OnChar和OnKeyDown消息的,会被 其它控件拦截
试时发现不会进入这两个函数,必须重定义PreTranslateMessage()虚函数才能正确地进入这两个消息函数,具体实现如下:

BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{

SendMessage(pMsg->message,pMsg->wParam,pMsg->lParam);

return 0;

//return CDialog::PreTranslateMessage(pMsg);
}
这样,程序就能正确地调用onKeyDown和onChar这两个函数了,且onKeyDown()在onCchar()之前处理的。

这样就能在对话框中响应WM_CHAR、WM_KEYDOWM消息了,注意在发送WM_CHAR时,实际发送了三个消息

即 WM_CHAR

WM_KEYDOWM

WM_KEYUP

所以,如果你有如下代码:

void CMy1Dlg::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if(nChar=='a')
MessageBox("a");
CDialog::OnChar(nChar, nRepCnt, nFlags);
}

会弹出两个消息对话框 ,所以最好单独在WM_KEYDOWM或WM_KEYUP处理事件。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? MFC 基于对话框 使用OnChar时无响应 关于OnChar()问题 我是学习计算机软件的,是大专文凭!我不想每天坐在电脑面前,那样我眼睛和身体受不了, OnChar中文乱码怎么解决? MFC中,调用OnChar函数,为什么一定要定义一个以CEdit为基类的变量呢? 怎么创建一个不是计算机管理员的电脑用户 看电脑累眼睛,还是看书累眼睛? 如何缓解长期加班造成的眼部疲劳? ug7.5非管理员用户打开不显示 最近眼睛很受不了电脑电视的刺激? OnChar()函数的具体用法。 电脑只有一个用户,但却显示不是管理员,怎么办啊?急急急! 经常长时间看电脑,怎样有效预防眼疲劳? 非管理员账户是什么意思 Windows10系统:非管理员用户登录后,为什么打开任何软件都需要用管理员身份确认?是否能取消相关*? 如何避免眼疲劳,有什么好方法? 全电脑办公环境下,怎样保护自己眼睛? 电脑族怎么样防止眼睛过度疲劳? 怎样保护眼睛?不让眼睛疲劳? photoshop cs3的发展历史 MFC中OnChar函数问题 我的VC++没有OnChar()函数怎么办? Win7 安装软件时出现“您当前所在的用户为非管理员账户···” onchar 中文乱码 阿琪思挺拔霜效果怎么样有 MFC怎么添加OnChar消息函数 拼多多里的阿琪思纤体霜是正品吗? Onchar函数中的nChar只能识别ACSII的字符 阿琪思美乳霜有效果吗 我想创建个非管理员的电脑账号。请问要怎么弄? 为什么我的电脑显示我不是管理员账户 如何更改管理员帐户为非管理员帐户 MFC的问题,关于OnChar()函数和背景图片设置 阿琪思---祛纹消痕修护霜有效果吗?是不是真的? 哪个帮我说一下VC++里面的OnChar函数里面怎么响应一像DEl,和方向键?谢谢! 有关MFC中OnChar函数的使用,请看下面的代码,希望您指点一二,如果不懂的朋友,希望你不要参与了哦 手机相册图片删除了怎么恢复 买了阿琪思去纹霜擦了发痒正常吗 Cedit的OnChar什么时候执行 阿琪思瘦身霜好吗?