информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Это тебе не richtext там так нельзя 22.05.02 02:37  Число просмотров: 925
Автор: Korsh <Мельников Михаил> Статус: Elderman
<"чистая" ссылка>
<programming>
[Win32] ListBox 21.05.02 17:28   [+, KMiNT21]
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вопрос собственно по subj.
Как мне сделать, чтобы при добавлении в него новой строки (SendMessage(hWndLog,LB_ADDSTRING,0,(LONG)Buf)) строка добавлялась другого цвета?
Это тебе не richtext там так нельзя 22.05.02 02:37  
Автор: Korsh <Мельников Михаил> Статус: Elderman
<"чистая" ссылка>
Можно... 22.05.02 14:51  
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
но только надо создать свое событие OwnerDraw в котором будер это рисоваться. Вот только я не знаю как создать и правильно сделать. Поэтому и спрашиваю.
Можно... 22.05.02 15:01  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
вот почитай:
WM_DRAWITEM
WM_MEASUREITEM
GetStockObject(DEFAULT_GUI_FONT)
DrawText()
GetSysColor(COLOR_WINDOW)
и т.п.

а цвет строки сам задаёшь
например через LB_SETITEMDATA
а потом в WM_DRAWITEM оттуда берёшь
Можно... 22.05.02 16:21  
Автор: Wizard(2) Статус: Незарегистрированный пользователь
Отредактировано 22.05.02 17:01  Количество правок: 1
<"чистая" ссылка>
> вот почитай:
> WM_DRAWITEM
> WM_MEASUREITEM
> GetStockObject(DEFAULT_GUI_FONT)
> DrawText()
> GetSysColor(COLOR_WINDOW)
> и т.п.
>
> а цвет строки сам задаёшь
> например через LB_SETITEMDATA
> а потом в WM_DRAWITEM оттуда берёшь

Спасибо. А можно по-конкретней.

Вот я создаю ListBox со свойством LBS_OWNERDRAWFIXED.
В родит. окне обрабатываю WM_MEASUREITEM (хотя не обязательно):

case WM_MEASUREITEM:
lpmis = (LPMEASUREITEMSTRUCT) lParam;
lpmis->itemHeight = 16;

Потом надо создать WM_DRAWITEM:
case WM_DRAWITEM:
lpdis = (LPDRAWITEMSTRUCT) lParam;
if(!lpdis->CtlType==ODT_LISTBOX) break;

MyColor=(COLORREF)SendMessage(lpdis->hwndItem,LB_GETITEMDATA, lpdis->itemID, (LPARAM) 0);
SendMessage(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID, (LPARAM) Buf);

SetTextColor(lpdis->hDC,MyColor);
RetCode=DrawText(lpdis->hDC,Buf,lstrlen(Buf),&lpdis->rcItem,DT_LEFT);
break;

Добавляю текст так
MyColor=RGB(255, 0, 0);
Num=SendMessage(hWndLog,LB_ADDSTRING,0,(LONG)Buf);
SendMessage(hWndLog, LB_SETITEMDATA, Num, MyColor);

Разный цвет работает, а текст по LB_GETTEXT не извлекается. Точнее извлекается до 4-х символов (напр. 'я' и три нуля). Почему?
Все получилось :). Вопрос снимается 22.05.02 19:04  
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
A beginners board dlia chego? 21.05.02 21:41  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
Я уверен, что это вопрос не в тему Beginners. 22.05.02 14:52    Штраф: 10 [+]
Автор: Wizard(2) Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach