Re[3]: Virtual ListCtrl и OwnerDraw
От: Аноним  
Дата: 03.10.04 20:31
Оценка:
Здравствуйте, Captain_Blood, Вы писали:


C_B>Ну в принципе, я то же самое делаю. Вот код:


C_B>
C_B>else if (pLVCustomDraw->nmcd.dwDrawStage == CDDS_ITEMPREPAINT)
C_B>{
C_B>    // Это присылается на нулевую колонку (то есть собственно item). Здесь
C_B>    // меня устраивает отрисовка по умолчанию, поэтому я возвращаю CDRF_DODEFAULT 
C_B>    // и заказываю нотификацию о перерисовке subitems через возврат CDRF_NOTIFYSUBITEMDRAW

C_B>    *pResult = CDRF_DODEFAULT | CDRF_NOTIFYSUBITEMDRAW;
C_B>}


Как-то это не совсем корректно выглядит в свете:

MSDN CDRF_DODEFAULT:
The control will draw itself. It will not send any additional NM_CUSTOMDRAW messages for this paint cycle. This occurs when dwDrawState equals CDDS_PREPAINT.


и ещё
C_B>else if ((pLVCustomDraw->nmcd.dwDrawStage & CDDS_SUBITEM) == CDDS_SUBITEM)


MSDN CDRF_NOTIFYSUBITEMDRAW:
Version 4.71. Your application will receive an NM_CUSTOMDRAW message with dwDrawState set to CDDS_ITEMPREPAINT | CDDS_SUBITEM before each list-view subitem is drawn


Xотя, приведённый Вами код успешно работает, правда на VS7.1.
Если уж такая проблема, может стоит попробовать, воспроизвести подобное на новом чистом проекте, по самому простому варианту?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.