Mfc EN#U受保护-是否';接收到的取决于控件放置在哪个对话框中

Mfc EN#U受保护-是否';接收到的取决于控件放置在哪个对话框中,mfc,winapi,Mfc,Winapi,我有一个从CRichEditCtrl派生的类CMyRichEditCtrl。我有以下资料: void CMyRichEditCtrl::PreSubclassWindow() { CRichEditCtrl::PreSubclassWindow(); SetEventMask(GetEventMask() |ENM_CHANGE | ENM_SELCHANGE | ENM_MOUSEEVENTS | ENM_KEYEVENTS | ENM_PROTECTED); CHA

我有一个从
CRichEditCtrl
派生的类
CMyRichEditCtrl
。我有以下资料:

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(…)。显然,联合国保护了文本,尽管我不完全清楚为什么