我的这个课程CMyRichEditCtrl
来自CRichEditCtrl
。我有以下内容:
void CMyRichEditCtrl::PreSubclassWindow()
{
CRichEditCtrl::PreSubclassWindow();
SetEventMask(GetEventMask() |ENM_CHANGE | ENM_SELCHANGE | ENM_MOUSEEVENTS | ENM_KEYEVENTS | ENM_PROTECTED);
CHARFORMAT format = { sizeof(CHARFORMAT) };
format.dwEffects = CFE_PROTECTED;
format.dwMask = CFM_PROTECTED;
SetDefaultCharFormat(format);
}
...
ON_NOTIFY_REFLECT(EN_PROTECTED, &CMyRichEditCtrl::OnProtected)
所以我们的想法是,当对文本进行更改时,自定义控件本身会被通知(主要是我在剪贴板消息之后)。
我将此类放入现有对话框中,替换现有的编辑控件。在某些对话框中,它可以完美地工作,但在其他对话框中,OnProtected不会被触发。
父对话框上是否有某些设置可能导致这种不同的行为?
更新:我找到了一个原因。在一个对话框中调用m_MyRichEdit.SetFont(...)。显然,这不会保护文本,但我不完全确定原因。