Странный RichEdit
От: Roy  
Дата: 06.01.02 08:03
Оценка:
Столкнулся с небольшой проблемой: потребовалось быстро написать программу-редактор с синтаксическим выделением для ассемблера. Решил использовать для этого RichEdit. Думал, что будет все просто, но не тут-то было! Сейчас приведу фрагмент кода (извиняюсь за бестолковсть — я его переворачивал и так и сяк), а потом объясню в чем проблема.

// синтаксическая подсветка(пока только комментарии )
void CRichView::SyntHLight()
{
CHARFORMAT cf;
FINDTEXTEX ft;
long sb, se;
long start, stop;
long n;
char str[2]="s";
CString tmp;
char s[100];

// получаем доступ к контролу
CRichEditCtrl& ctrl = GetRichEditCtrl();

// настраиваем параметры выделения комментария
cf.dwMask = CFM_COLOR;
cf.crTextColor = RGB(0,255,0);
cf.dwEffects = 0;
cf.cbSize = sizeof(cf);


// получаем кол-во строк в контроле
int nlines = ctrl.GetLineCount();

ctrl.GetSel(sb,se);// сохраняем предыдущее выделение
ctrl.HideSelection(TRUE,FALSE);// прячем выделение
// начинаем сканирование
for(int i=0; i<nlines; i++){
// получаем позицию первого символа строки...
if((start = ctrl.LineIndex(i)) != -1){
//...и последнего
stop = start + ctrl.LineLength(i);
// задаем параметры поиска
ft.chrg.cpMin = start;
ft.chrg.cpMax = stop;
ft.lpstrText = str;
//ищем
n = ctrl.FindText(0, &ft);
if (n != -1){
// если нашли, то выделяем зеленым до конца строки

ctrl.SetSel(n,stop);
ctrl.SetSelectionCharFormat(cf);
}
}
}
ctrl.HideSelection(FALSE,FALSE);
ctrl.SetSel(sb,se);
}

вот эта функция не хочет работать нормально, точнее, неправильно вычисляются переменные start и stop.

Я ни разу не работал с Rich Edit. Может я вообще неправильно подхожу к решению проблемы. Буду заранее признателен за любые советы.
Re: Странный RichEdit
От: Koumandin Россия  
Дата: 06.01.02 12:29
Оценка:
Здравствуйте Roy, Вы писали:

Roy>Столкнулся с небольшой проблемой: потребовалось быстро написать программу-редактор с синтаксическим выделением для ассемблера. Решил использовать для этого RichEdit. Думал, что будет все просто, но не тут-то было! Сейчас приведу фрагмент кода (извиняюсь за бестолковсть — я его переворачивал и так и сяк), а потом объясню в чем проблема.


Roy>Я ни разу не работал с Rich Edit. Может я вообще неправильно подхожу к решению проблемы. Буду заранее признателен за любые советы.


А зачем изобретать велосипед ? Все это уже кем-то сделано. Если хочешь — пришлю мылом пример RichEdita с выделением синтаксиса. Или сам посмотри на CodeGuru
Re[2]: Странный RichEdit
От: Аноним  
Дата: 06.01.02 13:06
Оценка:
Привет, слушай, буду очень признатьелен, если кинешь на мыло пример, просто по гроб жизни, а то меня так это допекло, что я стал напрямую класс от CSсrollView порождать и в нем все вручную делать, а меня это напрягает честно говоря :-)
Re[3]: Странный RichEdit
От: Koumandin Россия  
Дата: 06.01.02 18:18
Оценка:
Здравствуйте Аноним, Вы писали:

А>Привет, слушай, буду очень признатьелен, если кинешь на мыло пример, просто по гроб жизни, а то меня так это допекло, что я стал напрямую класс от CSсrollView порождать и в нем все вручную делать, а меня это напрягает честно говоря


Еще бы адресок...
Re[4]: Странный RichEdit
От: Roy  
Дата: 06.01.02 18:31
Оценка:
Извини, забыл совсем, что почта не светится здесь :-)

paramra@mail.ru

Заранее признателен
Роман
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.