Здравствуйте Wizard-2, Вы писали:
W2>Как мне сделать, чтобы при добавлении в него новой строки (SendMessage(hWndLog,LB_ADDSTRING,0,(LONG)Buf)) строка добавлялась другого цвета?
W2>Т.е. мне нужно, чтобы строки в ListBox'е были разного цвета.
Придется делать OWNERDRAW ListBox.
Здравствуйте Wizard-2, Вы писали:
W2>Здравствуйте Gosha, Вы писали:
G>>Здравствуйте Wizard-2, Вы писали: G>>Придется делать OWNERDRAW ListBox.
W2>А как его сделать? Может напишите примерчик буквально на пару строк, а то я ниразу не делал подобных вещей.
W2>Спасибо.
Здравствуйте flyker, Вы писали:
F>Здравствуйте Wizard-2, Вы писали: F>Посмотри описание WM_DRAWITEM в MSDN
Спасибо. А можно по-конкретней.
Вот я создаю 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;
............
А как дальше?
Здравствуйте Wizard-2, Вы писали:
W2>Здравствуйте flyker, Вы писали:
F>>Здравствуйте Wizard-2, Вы писали: F>>Посмотри описание WM_DRAWITEM в MSDN
W2>Спасибо. А можно по-конкретней.
W2>Вот я создаю ListBox со свойством LBS_OWNERDRAWFIXED. W2>В родит. окне обрабатываю WM_MEASUREITEM (хотя не обязательно):
W2>case WM_MEASUREITEM: W2> lpmis = (LPMEASUREITEMSTRUCT) lParam; W2> lpmis->itemHeight = 16;
W2>Потом надо создать WM_DRAWITEM: W2>case WM_DRAWITEM: W2> lpdis = (LPDRAWITEMSTRUCT) lParam; W2> if(!lpdis->CtlType==ODT_LISTBOX) break; W2>............ W2>А как дальше?
CtrlID — идентификатор контрола
itemID — номер строки в списке
itemData — указатель на твои данные, ассоциированные с данной строкой, можно установить с помощью LB_SETITEMDATA
Здравствуйте Wizard-2, Вы писали:
W2>Извиняюсь за второе сообщение, но отредактировать старое не получилось.
W2>В принципе с цветом разобрался, но возникла другая проблема — не вставляется нужный текст. W2>
Здравствуйте flyker, Вы писали:
F>По указателю надо передавать F>не (LONG)Buf, а (char*)Buf F>И с каких пор строки стали типа LONG ?
Если Вы имеете в виду так
Num=SendMessage(hWndLog,LB_ADDSTRING,0,(char *) Buf);
то так не работает и выдает ошибку cannot convert parameter 4 from 'char *' to 'long'
Здравствуйте Wizard-2, Вы писали:
W2>Здравствуйте flyker, Вы писали:
F>>По указателю надо передавать F>>не (LONG)Buf, а (char*)Buf F>>И с каких пор строки стали типа LONG ?
W2>Если Вы имеете в виду так W2>Num=SendMessage(hWndLog,LB_ADDSTRING,0,(char *) Buf); W2>то так не работает и выдает ошибку cannot convert parameter 4 from 'char *' to 'long'
Здравствуйте Wizard-2, Вы писали:
W2>Извиняюсь за второе сообщение, но отредактировать старое не получилось.
W2>В принципе с цветом разобрался, но возникла другая проблема — не вставляется нужный текст. W2>