Здравствуйте. Пишу клиентовскую часть чата, точнее интерфейс. С автопрокруткой edit'a разобрался... Теперь осталось решить ещё парочку проблемов. 1) Как отправлять в поле edit разноцветные буквы? 2) Как отправлять в поле edit текс в ввиде ссылки? (чтоб на ник нажать, и он появился в поле ввода) 3) Как изменить цвета некоторых строк в listbox'e? (чтоб опы отличались) Был бы очень благодарен еслиб помогли решить хотяб одну из проблем. Спасибо!
Flasher Смотря что ты подразумеваешь под edit. Если Richedit - то цветной текст в него реально вводить, что подобно в MSDN описано. Если же обычный - то никак. Ссылка - это в смысле c тегами BBCode?
1. никак 2. никак 3. никак Edit ничего подобного делать не умеет. Нужно юзать RichEdit, субклассировать обычный edit, написать свой edit с нуля или поискать уже готовый продвинутый edit на codeproject и подобных мусорках.
Благодарю за наводку, прочёл Tutorial 35. Но там не совсем то что нужно. Цвет текста обработывается после того как он попал в RichEdit. Можно конечно указать чтоб от [ и до ] был определённый текст, но вить это чат, а если в сообщении тоже будут квадратные скобки [nick] message [... Поетому надо уже с заданным цветом текст отправлять туда. Это возможно? Вот пример отправки: Код (Text): invoke SendMessage,hwndRichEdit,WM_VSCROLL,SB_BOTTOM,0 invoke SendMessage,hwndRichEdit,EM_SETSEL,-1,-1 invoke SendMessage,hwndRichEdit,EM_SCROLLCARET,0,0 invoke SendMessage,hwndRichEdit,EM_REPLACESEL,0,addr szText Может где-то тут можно задать цвет?
А в чём проблема? Если так уж не хочется после, то формируй текст в формате RTF и отправляй richedit'у - будет тебе "до того". Да, ты заменяешь весь текст. Почему бы просто не добавлять его? Запоминаешь позицию, добавляешь и обрабатываешь добавленный текст.
3. поставь ListBox'у стиль LBS_OWNERDRAWFIXED, И обрабатывай сообщения WM_DRAWITEM, WM_MEASUREITEM, которые присылаются главному окну.
IceStudent, с позициями запутался.. Вот то, что пока сумел сделать: Код (Text): invoke SetTextColor,hdc,0FF0000h invoke DrawText,hdc,addr _Mes,-1,addr rect,0 invoke SendMessage,hwndRichEdit,EM_SETSEL,0,0 invoke SendMessage,hwndRichEdit,EM_REPLACESEL,1,addr _Mes