SDI + редактирование текста

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Alezis
Сообщения: 98
Зарегистрирован: 16 авг 2004, 01:10
Откуда: Минск
Контактная информация:

Короче такая трабла.
Есть SDI приложение на основе CRichEditView.
Обычный редатор при первом запуске получается.
Набираем тама какой нить текст.
Как теперь этот текст мне взять оттудова и чё нить с ним сделать заменить цвет текста например, т.е. вот я набираю стандартный текст, потом жму допустим пробелили чего нить ещё и текст который я набрал должен поменять цвет. Кроме того научите как ещё получить этот текст чтоб с ним работать потом по-своему усмотрению.

И ещё как мне узнать какая буква отобразиться на экране.
т.е. вот прехватываю WM_KEYDOWN , потом там в nChar стоит числовое обозначение клавиши, а вот как мне по этому числу определить символ который нажат если это символ вообще.т.е. как из виртуал кей преобразовать в то что видим на экране.
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

Вообще текст ЛЮБОГО окна как правило получается GetWindowText();
А символ определяется путем простого сравнения с нужной буквой.
Ну если очень хочется можешь к чару привести nChar.
Но вообще компилятор в данном случае должен привести все сам
В SAD - все в SAD.
Acidy
Сообщения: 23
Зарегистрирован: 19 окт 2004, 10:40
Откуда: хз
Контактная информация:

:arrow: лови WM_CHAR

Код: Выделить всё

void CMyView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
      TCHAR buff[20];
      wsprintf(buff, _T("Нажата \"%c\""), nChar);
      MessageBox(buff);      
      ...
}
насчёт работы с текстом в CRichEditView, МСДН нету штоли? там всё подробно и хорошо описано ... а ещё пример есть (исходники WORDPAD'а)
Удачи... =)
Alezis
Сообщения: 98
Зарегистрирован: 16 авг 2004, 01:10
Откуда: Минск
Контактная информация:

Всем спасибо всё решил сам, ну почти всё.
Текст читаю построчно, т.к. насколько я понял GetWindowText() читаить тока 64 Кб, а может и нет, не помню...
Спасибо Acidy за код.
Acidy
Сообщения: 23
Зарегистрирован: 19 окт 2004, 10:40
Откуда: хз
Контактная информация:

есть ещё функции в класса CRichEditCtrl::StreamIn и CRichEditCtrl::StreamOut (мессаги EM_STREAMIN и EM_STREAMOUT соответственно). Именно ими надо писать или читать текст контрола блоками указанного размера ...
Если надо пришлю пример сериализации текста в формате RTF...
Удачи... =)
Ответить