Здравствуйте, Went, Вы писали:
W>Здравствуйте, pilgrim_, Вы писали:
_>>Если все еще актуально, дай знать, откопаю старый проект, где-то через неделю, сходу не вспомню, больше 10 лет прошло, но рич-едит насиловался по полной ,возможно и обновление скрола подавлялось принудительно.
W>Честно сказать, актуально. Если не сложно, буду очень благодарен.
Извиняюсь за задержку, откопал таки проект, с трудом вспомнил что там да как, короче: при изменении атрибутов текста (а именно BackColor), в том числе массовые (один и более фрагментов текста, включая невидимые), в том числе с большой частотой (по таймеру, частое моргание цвета/плавная смена) помимо freez'a у TextDocument, также подавлялось событие EN_CHANGE (EM_GETEVENTMASK/EM_SETEVENTMASK + ENM_CHANGE), затем все это восстанавливалось обратно. т.е.:
..
textDOcument.Freeze();
//disable EN_CHANGE
int evtMask = (int)SendMessage(richHandle, EM_GETEVENTMASK, 0, 0);
SendMessage(richHandle, EM_SETEVENTMASK, 0, evtMask & ~ENM_CHANGE)
//update text attributes
..
//restore events-enable EN_CHANGE
SendMessage(richHandle, EM_SETEVENTMASK, 0, evtMask)
textDOcument.Unfreeze();