CRichEditCtrl 可以知道某人何时设置其文本吗?
Posted
技术标签:
【中文标题】CRichEditCtrl 可以知道某人何时设置其文本吗?【英文标题】:Can a CRichEditCtrl know when someone sets its text? 【发布时间】:2010-02-18 11:46:19 【问题描述】:在 CRichEditCtrl 中键入时,会生成 EN_CHANGE 消息。然而MSDN 说:
Rich Edit:在 Microsoft Rich 中受支持 编辑 1.0 及更高版本。接受 EN_CHANGE 通知,指定 与发送的掩码中的 ENM_CHANGE EM_SETEVENTMASK 消息。为了 有关兼容性的信息 丰富的编辑版本,具有各种 系统版本,请参阅关于 Rich Edit 控件。
未发送 EN_CHANGE 通知 当使用 ES_MULTILINE 样式时 并且文本是通过发送的 WM_SETTEXT。
我有几个使用多行富编辑控件的对话框,实际上是我的自定义CMyRichEdit
类。该类会在文本更改时自动执行分析,但在最初填充对话框的重要情况下,不会看到任何通知。
关键是要避免不必要地更改我们的代码库 - 新控件被放入以替换现有控件。追查使用getDlgItem(IDC_EDIT)->SetWindowText
的每个实例,或者DDX_Text(pDX, IDC_EDIT, m_strEdit)
自动将字符串内容与控件链接的每个实例,将意味着大量搜索代码并重新测试所有更改的内容。
有没有简单的方法? MyRichEdit
可以捕获自己的 WM_SETTEXT
消息吗?
【问题讨论】:
【参考方案1】:ON_MESSAGE(WM_SETTEXT, OnSetText)
// fires every time someone calls SetWindowText
LRESULT MyRichEditCtrl::OnSetText(WPARAM wParam, LPARAM lParam)
return CWnd::Default();
【讨论】:
以上是关于CRichEditCtrl 可以知道某人何时设置其文本吗?的主要内容,如果未能解决你的问题,请参考以下文章
Etsy 如何知道某人何时使用 PayPal 付款? [关闭]