Начну с практики. Для подсветки нужен ведь ТРичЕдит? Я так понял, что надо пробежать по тексту, выделяя разные его куски и меняя цвет этих кусков через СелАттрибутес. Проблема в том, что этот процесс виден пользователю. Я пробовал отрубить перерисовку компонента на время раскраски через посылку сообщения ВМ_СЕТРЕДРАВ, а потом вызвать метод Инвалидате. Но проблема тут в том, что это Инвалидате сначала чистит окно, а потом выводит текст, то есть создаёт мерцание. Вопрос - как раскрасить текст, чтобы пользователю не был виден процесс раскрашивания, а был виден только результат?
Теория. Какие вообще алгоритмы есть? Прогон всего текста при каждой операции неэкономичен. Прогон только ближайшего к курсору слова при каждом изменении? А что делать после операций с блоками текста? Ни у всякие такие вопросы. В общем, есть ли какая-то общая теория на эту тему?
![]() |