EN_PROTECTED - 是否接收控件取决于放置控件的对话框

时间:2010-02-18 17:02:18

标签: mfc winapi

我的这个课程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(...)。显然,这不会保护文本,但我不完全确定原因。

0 个答案:

没有答案