Здравствуйте!
Имеется два listbox и соответственно два массива со значениями, согласно которым нужно подсвечивать определенные строки в listbox.
С самой поцветкой(выделением,highlight) разобрался: перегрузил DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct), pDC->FillRect(rcLabel, &CBrush(d0)), DrawText...
Ступор наступил, когда начал распределять highlight, читая массив. Предполагая, что DrawItem каждый раз вызывается сразу после вставки/работы со строками одного листбокса, я ввел переменную:
CurrentList=LIST_NUMBER_1;
list_1.InsertItem(0,(LPCSTR)(&buffer[0]));
и
CurrentList=LIST_NUMBER_2;
list_2.InsertItem(0,(LPCSTR)(&buffer[0]));
соответственно в DrawItem массив выбирается исходя из значений переменной.
но,
1) CurrentList всегда равен LIST_NUMBER_2
2) Такое ощущение(по точке останова), что функция DrawItem работает только для 2го listbox
3) lpDrawItemStruct меняются только ItemId, hDC, rcItem.
Подскажите, как нормально организовать highlight. Лучше без правки DrawItem-после построения всего списка, в родительском классе красиво вызвать в оформленной функции по типу(SetSel):
list_2.SetHighlight(int ItemID);
еще раз повторяю-важна привязка подцветки по массивам, а не абы как.
Вот картинка из примера "Visual C++ 2008 Feature Pack" -> NewControls. Оно?
Здравствуйте, Serpuh, Вы писали:
S>Вот картинка из примера "Visual C++ 2008 Feature Pack" -> NewControls. Оно?
S>http://s004.radikal.ru/i208/1402/b6/adeec51906d3.jpg
CMFCListCtrl унаследован от CListCtrl, а это не совсем то, что хочет автор. BCGSoft (авторы Feature Pack) в последних версиях свой ListBox вроде заточили под highlighting:
Автор, похоже, все-таки не выделение имеет в виду, а именно раскраску. Так что CMFCListCtrl — как раз то, что нужно.