EN_PROTECTED - зависит от того, в каком диалоге находится элемент управления - PullRequest
1 голос
/ 18 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...