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