Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Подсветка в редакторе


Автор: Aehn 7.8.2008, 09:41
В книге Зубкова дан пример редактора. Всего 7 кб.
Какими средствами там можно было бы добавить подсветку, кто знает?

Автор: AndNot 7.8.2008, 14:00
Зубкова не читал, но редакторы действуют одинаково - построчно выводят текст на экран. Вот в процедуру вывода строки и встраивают ее парсинг и на ключевые слова и соответствующую подсветку. Можно, дополнительно, вставить подсветку слова под курсором, т.е. когда пользователь нажал клавишу, то определяем, где находится курсор и слово под ним, его и подсвечиваем, но это геморно, особенно при наличии многострочных коментариев. Так, что однозначно лучше реализовать подсветку строк целиком, тем более правила выделения ключевых слов более-менее одинаковы почти у всех популярных языков. Да и скорость вполне приемлимая.

Автор: Aehn 7.8.2008, 14:27
Это все и так ясно. Меня интересует сам механизм подсветки на низком уровне. Как сделать группу символов определенного цвета, отличного от других.

Автор: AndNot 7.8.2008, 15:11
Зависит от системы. Я же не знаю, для какой он пример приводил smile Для ДОС, самый удобный способ был реализован в IDE Turbo Pascal. Редактор отдавал строку на вывод на экран одной подпрограмме. Она преобразовывала ее в формат видеопамяти - символ & аттрибут цвета. Затем эта строка просто переносилась на экран, простым REP MOVS. Именно во время преобразования в формат видеопамяти строка разбивалась на слова и каждому слову присваивался определенный байт аттрибута, в зависимости от его группы.

Автор: Aehn 8.8.2008, 08:16
Речь идет о Windows Зубков "Программирование на языке ассемблер под ДОС Виндоуз Юних"
Пример дан под винды. нормальный редактор такой, весит в четыре раза меньше стандартного ноутпада. Вопрос, какими средствами там можно было бы сделать подсветку?

Автор: airyashov 8.8.2008, 09:55
Вопрос надо ставить по другому, как в стандартном Windows окне класса Edit сделать подстветку.

Автор: ИванМ 1.10.2008, 19:24
Подсветку делать геморойно. В стандартном текстовом поле можно попытаться делать подсветку в событии WM_PAINT в узеской оконной функции. Но это не выход. Класс EDIT Windows рисует операционной системой без подсветки, и единственное что можно - это поверх нарисованных букв рисовать свои другим цветом например. Но это бред. Будет все мерцать и тормозить. Лучше делать свое окно и вручную все прописывать. Но код будет большой.

Автор: AndNot 1.10.2008, 20:15
Цитата(ИванМ @  1.10.2008,  19:24 Найти цитируемый пост)
Но это бред
Действительно smile Делают сабклассированием контрола. Тогда ничего не мерцает, да и окошек можно понаделать сколько душе угодно ;) Рекомендую: http://mc-black.narod.ru/x3mEd.htm Сделано очень грамотно, автору респект smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)