MFC中消息框消息响应的EN_CHANGE和EN_UPDATE有什么区别

 

EN_CHANGE: 当编辑框中的文本被修改,新的文本显示之 “后” 发送此消息
EN_UPDATE: 当编辑框中的文本被修改,新的文本显示之 “前” 发送此消息

MFC(Microsoft Foundation Classes),`CEdit` 是一个用于创建编辑控件的类。当使用 `Create` 方法创建 `CEdit` 控件后,可以通过消息映射来处理各种消息,包括编辑的 `EN_CHANGE` 消息,它在编辑内容改变后发送。 如果你想覆盖原生的 `ON_EN_CHANGE` 消息处理过程,可以在你的 `CEdit` 派生类添加一个消息映射宏,然后定义一个新的处理函数。以下是实现这一过程的步骤: 1. 在你的 `CEdit` 派生类的头文件添加一个消息映射宏和一个新的处理函数声明: ```cpp // YourDerivedEdit.h class CYourDerivedEdit : public CEdit { // ... 其他成员和函数 ... // 消息映射宏 afx_msg void OnChange(); // 声明处理函数 // 消息映射宏 DECLARE_MESSAGE_MAP() }; ``` 2. 在你的类的实现文件添加消息映射条目和处理函数的定义: ```cpp // YourDerivedEdit.cpp BEGIN_MESSAGE_MAP(CYourDerivedEdit, CEdit) // ... 其他消息映射条目 ... ON_EN_CHANGE(IDC_YOUR_EDIT, &CYourDerivedEdit::OnChange) // 消息映射条目 END_MESSAGE_MAP() void CYourDerivedEdit::OnChange() { // 在这里编写你自己的消息处理代码 // 原始的处理代码将不会被执行,除非你在新的处理函数调用基类版本 // 调用基类的处理函数,如果需要保留默认行为 // CEdit::OnChange(); // ... 其他自定义代码 ... } ``` 3. 确保你的 `CEdit` 派生类对象被正确创建,并且控件ID与消息映射的ID相匹配。 现在,每当 `EN_CHANGE` 消息被触发时,MFC 会调用你定义的 `OnChange` 函数,而不是默认的 `CEdit` 消息处理函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值