как отправлять в edit цветные буквы?

Тема в разделе "WASM.BEGINNERS", создана пользователем Flasher, 5 авг 2006.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Здравствуйте.
    Пишу клиентовскую часть чата, точнее интерфейс.
    С автопрокруткой edit'a разобрался...
    Теперь осталось решить ещё парочку проблемов.

    1) Как отправлять в поле edit разноцветные буквы?
    2) Как отправлять в поле edit текс в ввиде ссылки? (чтоб на ник нажать, и он появился в поле ввода)
    3) Как изменить цвета некоторых строк в listbox'e? (чтоб опы отличались)

    Был бы очень благодарен еслиб помогли решить хотяб одну из проблем.
    Спасибо!
     
  2. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Flasher
    Смотря что ты подразумеваешь под edit. Если Richedit - то цветной текст в него реально вводить, что подобно в MSDN описано. Если же обычный - то никак. Ссылка - это в смысле c тегами BBCode?
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    1. никак
    2. никак
    3. никак

    Edit ничего подобного делать не умеет. Нужно юзать RichEdit, субклассировать обычный edit, написать свой edit с нуля или поискать уже готовый продвинутый edit на codeproject и подобных мусорках.
     
  4. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Благодарю за наводку, прочёл Tutorial 35.
    Но там не совсем то что нужно.
    Цвет текста обработывается после того как он попал в RichEdit.
    Можно конечно указать чтоб от [ и до ] был определённый текст, но вить это чат, а если в сообщении тоже будут квадратные скобки [nick] message [...
    Поетому надо уже с заданным цветом текст отправлять туда.
    Это возможно?
    Вот пример отправки:
    Код (Text):
    1.     invoke SendMessage,hwndRichEdit,WM_VSCROLL,SB_BOTTOM,0
    2.     invoke SendMessage,hwndRichEdit,EM_SETSEL,-1,-1
    3.     invoke SendMessage,hwndRichEdit,EM_SCROLLCARET,0,0
    4.     invoke SendMessage,hwndRichEdit,EM_REPLACESEL,0,addr szText
    Может где-то тут можно задать цвет?
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    А в чём проблема? Если так уж не хочется после, то формируй текст в формате RTF и отправляй richedit'у - будет тебе "до того".

    Да, ты заменяешь весь текст. Почему бы просто не добавлять его? Запоминаешь позицию, добавляешь и обрабатываешь добавленный текст.
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    3. поставь ListBox'у стиль LBS_OWNERDRAWFIXED, И обрабатывай сообщения WM_DRAWITEM, WM_MEASUREITEM, которые присылаются главному окну.
     
  7. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    IceStudent, с позициями запутался..
    Вот то, что пока сумел сделать:
    Код (Text):
    1.        invoke SetTextColor,hdc,0FF0000h
    2.        invoke DrawText,hdc,addr _Mes,-1,addr rect,0
    3.        invoke SendMessage,hwndRichEdit,EM_SETSEL,0,0
    4.        invoke SendMessage,hwndRichEdit,EM_REPLACESEL,1,addr _Mes