在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
消息吗?
答案 0 :(得分:3)
ON_MESSAGE(WM_SETTEXT, OnSetText)
// fires every time someone calls SetWindowText
LRESULT MyRichEditCtrl::OnSetText(WPARAM wParam, LPARAM lParam)
{
return CWnd::Default();
}