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 付款? [关闭]

CRichEditCtrl 和 Unicode BOM

CRichEditCtrl 输入字符串长度限制

如何在 CRichEditCtrl 中禁用 RTF 表格边框?

Socket.io 如何判断某人何时离开

有没有办法检查何时添加了某人的角色? [不和谐.js]