У меня есть этот класс 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 (...). Очевидно, это не защищает текст, хотя я не совсем уверен, почему.