MFC关于Edit的简单问题

kmsch 2015-07-15 05:34:19
我的对话框中的edit控件实现了ON_EN_CHANGE事件,而我只想用户在界面上改变内容时触发该事件,程序代码改变内容不触发此事件,有没简单一点的办法实现
...全文
182 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kmsch 2015-07-18
  • 打赏
  • 举报
回复
引用 10 楼 pcradio 的回复:
跟上面差不多,只是你自己封装一下,以后调自己封装的,就别直接调SetWindowText了,这样不会代码乱 先声明全局的bool g_bAppSetText = false; void SetMyWindowText(LPCTSTR lpszString) { g_bAppSetText = true; SetWindowText(lpszString); g_bAppSetText = false; }
这方法不错
阿源是少年 2015-07-17
  • 打赏
  • 举报
回复
跟上面差不多,只是你自己封装一下,以后调自己封装的,就别直接调SetWindowText了,这样不会代码乱 先声明全局的bool g_bAppSetText = false; void SetMyWindowText(LPCTSTR lpszString) { g_bAppSetText = true; SetWindowText(lpszString); g_bAppSetText = false; }
worldy 2015-07-17
  • 打赏
  • 举报
回复
引用 8 楼 kmsch 的回复:
[quote=引用 7 楼 worldy 的回复:] [quote=引用 4 楼 kmsch 的回复:] [quote=引用 3 楼 worldy 的回复:] 当然有了
求教啊[/quote] 想一本万利可以如此如此: 定义BOOL bCodeChg=TRUE; 重写OnWndMsg 在WM_KEYDOWN: bCodeChg=FALSE; 在WM_KEYUP bCodeChg=TRUE; 在WM_EN_CHANGE: if(bCodeChg) return; .......... 其它消息传给缺省处理 [/quote] 这种方式还是不好,用户的修改不一定通过键盘,可以通过剪贴板等方式[/quote] 那你自己想想办法了
kmsch 2015-07-17
  • 打赏
  • 举报
回复
引用 7 楼 worldy 的回复:
[quote=引用 4 楼 kmsch 的回复:] [quote=引用 3 楼 worldy 的回复:] 当然有了
求教啊[/quote] 想一本万利可以如此如此: 定义BOOL bCodeChg=TRUE; 重写OnWndMsg 在WM_KEYDOWN: bCodeChg=FALSE; 在WM_KEYUP bCodeChg=TRUE; 在WM_EN_CHANGE: if(bCodeChg) return; .......... 其它消息传给缺省处理 [/quote] 这种方式还是不好,用户的修改不一定通过键盘,可以通过剪贴板等方式
worldy 2015-07-16
  • 打赏
  • 举报
回复
引用 4 楼 kmsch 的回复:
[quote=引用 3 楼 worldy 的回复:] 当然有了
求教啊[/quote] 想一本万利可以如此如此: 定义BOOL bCodeChg=TRUE; 重写OnWndMsg 在WM_KEYDOWN: bCodeChg=FALSE; 在WM_KEYUP bCodeChg=TRUE; 在WM_EN_CHANGE: if(bCodeChg) return; .......... 其它消息传给缺省处理
处处留心 2015-07-16
  • 打赏
  • 举报
回复
失去焦点判断内容?响应Killfocus?
ArcRain 2015-07-16
  • 打赏
  • 举报
回复
在EDIT控件父窗口用SetDlgItemText试试。 根据MSDN,WM_SETTEXT不会触发EN_CHANGE: 1)The EN_CHANGE notification code is not sent when the ES_MULTILINE style is used and the text is sent through WM_SETTEXT. 2)The SetDlgItemText function sends a WM_SETTEXT message to the specified control.
kmsch 2015-07-15
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
当然有了
求教啊
worldy 2015-07-15
  • 打赏
  • 举报
回复
当然有了
kmsch 2015-07-15
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
定义一个bool变量bCodeChg 代码改变的地方 bCOdeChg=TRUE; theEdit.SetWindowText(。。。。。) bCodeChg=FASE; ON_EN_CHANGE函数开头 if(bCodeChg) return; ................
这方法我也想过,不过对话框上很多个EDIT控件,这样一来就很凌乱了,有没更好一点的办法
worldy 2015-07-15
  • 打赏
  • 举报
回复
定义一个bool变量bCodeChg 代码改变的地方 bCOdeChg=TRUE; theEdit.SetWindowText(。。。。。) bCodeChg=FASE; ON_EN_CHANGE函数开头 if(bCodeChg) return; ................

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧