CRichEditCtrl可以知道有人设置文本吗?

时间:2010-02-18 11:46:20

标签: mfc

在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 个答案:

答案 0 :(得分:3)

ON_MESSAGE(WM_SETTEXT, OnSetText)

// fires every time someone calls SetWindowText
LRESULT MyRichEditCtrl::OnSetText(WPARAM wParam, LPARAM lParam)
{
    return CWnd::Default();
}