От:
Lunich
Дата: 28.01.04 17:23
Оценка:
Подскажите, пожалуйста, решение такой задачи:
Имеется ListView. Мне нужно выделить строки цветом (неважно, фон или
текст) в зависимости от определенных параметров. Проект не под MFC.
Posted via RSDN NNTP Server 1.8 beta
Здравствуйте, Lunich, Вы писали:
L>Подскажите, пожалуйста, решение такой задачи:
L>Имеется ListView. Мне нужно выделить строки цветом (неважно, фон или
L>текст) в зависимости от определенных параметров. Проект не под MFC.
NM_CUSTOMDRAW,
здесьАвтор: Odi$$ey Дата: 16.10.02
еще гдлянь
От:
Lunich
Дата: 28.01.04 19:12
Оценка:
Odi$$ey wrote:
Еще такой вопрос. Что я делаю неправильно???
// Обработка элементов управления
case WM_NOTIFY:{
NMHDR *nm = (NMHDR *)lp;
switch ( nm->code ){
case NM_CUSTOMDRAW:{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lp;
switch ( lplvcd->nmcd.dwDrawStage ){
case CDDS_PREPAINT:
//Сюда приходим постоянно
return CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT:
//Здесь даже не появляемся
return CDRF_NOTIFYSUBITEMDRAW;
case CDDS_ITEM:
case CDDS_SUBITEM:
case CDDS_PREPAINT | CDDS_SUBITEM:
case CDDS_ITEM | CDDS_SUBITEM | CDDS_PREPAINT:
//Здесь даже не появляемся
lplvcd->clrTextBk = GetSysColor( COLOR_WINDOW );
lplvcd->clrText = GetSysColor( COLOR_WINDOWTEXT );
return CDRF_NEWFONT;
}
}break ;
ТОРМОЖУ!!!
Posted via RSDN NNTP Server 1.8 beta
От:
Lunich
Дата: 29.01.04 18:44
Оценка:
Lunich wrote:
>
> Еще такой вопрос. Что я делаю неправильно???
>
> // Обработка элементов управления
> case WM_NOTIFY:{
> NMHDR *nm = (NMHDR *)lp;
> switch( nm->code ){
> case NM_CUSTOMDRAW:{
> LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lp;
> switch( lplvcd->nmcd.dwDrawStage ){
> case CDDS_PREPAINT:
> *//Сюда приходим постоянно*
> return CDRF_NOTIFYITEMDRAW;
> case CDDS_ITEMPREPAINT:
> *//Здесь даже не появляемся*
> return CDRF_NOTIFYSUBITEMDRAW;
> case CDDS_ITEM:
> case CDDS_SUBITEM:
> case CDDS_PREPAINT | CDDS_SUBITEM:
> case CDDS_ITEM | CDDS_SUBITEM | CDDS_PREPAINT:
> *//Здесь даже не появляемся*
> lplvcd->clrTextBk = GetSysColor( COLOR_WINDOW );
> lplvcd->clrText = GetSysColor( COLOR_WINDOWTEXT );
> return CDRF_NEWFONT;
> }
> }break;
>
И все-таки, что не так? Или без MFC не обойтись?
HEEEEEEEEEEEEELP!!! (Крик души)
Posted via RSDN NNTP Server 1.8 beta
От:
SergH
Дата: 30.01.04 10:28
Оценка:
Здравствуйте, Lunich, Вы писали:
L>Еще такой вопрос. Что я делаю неправильно???
L>L> switch ( lplvcd->nmcd.dwDrawStage ){
L> case CDDS_PREPAINT:
L>//Сюда приходим постоянно
L>
return CDRF_NOTIFYITEMDRAW;
L>
case CDDS_ITEMPREPAINT:
L>
//Здесь даже не появляемся
..
L>
//Здесь даже не появляемся
..
L> }
L> }
break ;
L>
L>ТОРМОЖУ!!!
А ты уверен что он должен появляться? Я не знаю. Попробуй использовать CDDS_PREPAINT и dwItemSpec.
Делай что должно, и будь что будет
От:
Lunich
Дата: 30.01.04 13:05
Оценка:
SergH wrote:
>
> А ты уверен что он должен появляться? Я не знаю. Попробуй использовать
> CDDS_PREPAINT и dwItemSpec.
Ну хорошо, а что должно произойти в таком случае? (в реальности не
происходит ничего)
case WM_NOTIFY:{
NMHDR *nm = (NMHDR *)lp;
switch ( nm->code ){
case NM_CUSTOMDRAW:{
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lp;
switch ( lplvcd->nmcd.dwDrawStage ){
case CDDS_PREPAINT:
lplvcd->clrText = RGB( 255, 255, 255 );
lplvcd->clrTextBk = RGB( 0, 0, 0 );
return CDRF_NEWFONT;
...
???
Posted via RSDN NNTP Server 1.8 beta
От:
Lunich
Дата: 30.01.04 14:38
Оценка:
Lunich wrote:
>
>
> case WM_NOTIFY:{
> NMHDR *nm = (NMHDR *)lp;
> switch ( nm->code ){
> case NM_CUSTOMDRAW:{
> LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lp;
> switch ( lplvcd->nmcd.dwDrawStage ){
> case CDDS_PREPAINT:
> lplvcd->clrText = RGB( 255, 255, 255 );
> lplvcd->clrTextBk = RGB( 0, 0, 0 );
> return CDRF_NEWFONT;
> ...
>
>
> ???
Может, яфлаги где-то не поставил? Или сообщения не пересылаю какие-то?
Хоть кто-то, хоть чем-то помогите
Posted via RSDN NNTP Server 1.8 beta
Здравствуйте, Lunich, Вы писали:
L>Lunich wrote:
>>
>>
>> case WM_NOTIFY:{
>> NMHDR *nm = (NMHDR *)lp;
>> switch ( nm->code ){
>> case NM_CUSTOMDRAW:{
>> LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lp;
>> switch ( lplvcd->nmcd.dwDrawStage ){
>> case CDDS_PREPAINT:
>> lplvcd->clrText = RGB( 255, 255, 255 );
>> lplvcd->clrTextBk = RGB( 0, 0, 0 );
>> return CDRF_NEWFONT;
>> ...
>>
>>
>> ???
L>Может, яфлаги где-то не поставил? Или сообщения не пересылаю какие-то?
L>Хоть кто-то, хоть чем-то помогите
что ты раскричался? ведь все в МСДН есть. что-то в таком духе:
case CDDS_PREPAINT:
* pResult = CDDF_NOTIFYITEMDRAW;
break ;
case CDDS_ITEMPREPAINT:
lplvcd->clrText = RGB( 255, 255, 255 );
lplvcd->clrTextBk = RGB( 0, 0, 0 );
* pResult = CDRF_NEWFONT;
break ;
От:
Lunich
Дата: 30.01.04 18:44
Оценка:
kliff wrote:
>
>
> что ты раскричался? ведь все в МСДН есть. что-то в таком духе:
>
> case CDDS_PREPAINT:
> * pResult = CDDF_NOTIFYITEMDRAW;
> break;
> case CDDS_ITEMPREPAINT:
> lplvcd->clrText = RGB( 255, 255, 255 );
> lplvcd->clrTextBk = RGB( 0, 0, 0 );
> * pResult = CDRF_NEWFONT;
> break;
>
Да в том то и дело, что не работает (чего бы я кричал
. Я пока
обошелся OWNER DRAW FIXED, но это же не дело...
Posted via RSDN NNTP Server 1.8 beta
ListView - как выделить строки цветом
От:
McQwerty
Дата: 31.01.04 14:41
Оценка:
23 (2)
#Имя:
FAQ.winapi.listview.customdraw
L>Имеется ListView. Мне нужно выделить строки цветом (неважно, фон или текст) в зависимости от определенных параметров. Проект не под MFC .
>> что ты раскричался? ведь все в МСДН есть. что-то в таком духе:
>> case CDDS_PREPAINT:
>> * pResult = CDDF_NOTIFYITEMDRAW;
>> break ;
>> case CDDS_ITEMPREPAINT:
>> lplvcd->clrText = RGB( 255, 255, 255 );
>> lplvcd->clrTextBk = RGB( 0, 0, 0 );
>> * pResult = CDRF_NEWFONT;
>> break ;
L>Да в том то и дело, что не работает (чего бы я кричал . Я пока
L>обошелся OWNER DRAW FIXED, но это же не дело...
Это возможно, если список в диалоге.
В диалоге результат нужно возвращать через:
SetWindowLong (hDlg, DWL_MSGRESULT, NOTIFYITEMDRAW);
От:
Lunich
Дата: 31.01.04 16:29
Оценка:
McQwerty wrote:
>
> Это возможно, если список в диалоге.
> В диалоге результат нужно возвращать через:
>
> SetWindowLong (hDlg, DWL_MSGRESULT, NOTIFYITEMDRAW);
>
СПАСИБО!!! Наконец-то проблема решена!!!
Уррррррррраааааааа!!! Заррррррррааааааааботало!!!
(с)Кот Матроскин
Posted via RSDN NNTP Server 1.8 beta
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить