При вводе в CRichEditCtrl генерируются сообщения EN_CHANGE. Однако MSDN говорит:
Rich Edit: поддерживается в Microsoft Rich
Изменить 1.0 и позже. Получить
EN_CHANGE уведомления, укажите
ENM_CHANGE в маске, отправленной с
Сообщение EM_SETEVENTMASK. За
информация о совместимости
богатые редактировать версии с различными
версии системы, см. О Rich Edit
Органы управления.
Уведомление EN_CHANGE не отправлено
когда используется стиль ES_MULTILINE
и текст отправляется через
WM_SETTEXT .
У меня есть несколько диалогов, использующих многострочный элемент управления rich edit, фактически мой пользовательский класс CMyRichEdit
. Этот класс автоматически выполняет анализ при изменении текста, но в важном случае, когда диалоговое окно изначально заполнено, уведомление не отображается.
Смысл в том, чтобы избежать необходимости менять нашу кодовую базу более чем абсолютно необходимо - новый элемент управления заменяется на уже существующий. Погоня за каждым экземпляром, где используется getDlgItem(IDC_EDIT)->SetWindowText
или где DDX_Text(pDX, IDC_EDIT, m_strEdit)
автоматически связывает содержимое строки с элементом управления, будет означать много ошибок в коде и повторного тестирования всего измененного.
Есть ли простой способ? Может ли MyRichEdit
ловить свои собственные WM_SETTEXT
сообщения?