ListView не получает код CDDS_ITEMPREPAINT
Вот код, который я использовал, но я не получаю правильного сообщения
//creating the list view hListView=CreateWindowEx(0,L"SysListView32",NULL, WS_CHILD|WS_VISIBLE|LVS_REPORT|WS_BORDER|WS_HSCROLL|WS_VSCROLL|WS_TABSTOP|WS_GROUP|LVS_AUTOARRANGE|LVS_ALIGNLEFT,10,50,rc.right-10,rc.bottom-50,hWnd,(HMENU)DISP_LISTVIEW,(HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),NULL); //for extended style int estyle=LVS_EX_TRACKSELECT | LVS_EX_ONECLICKACTIVATE | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES| LVS_EX_HEADERDRAGDROP; ListView_SetExtendedListViewStyle(hListView,estyle); //in the WndProc function case WM_NOTIFY: NMHDR *nmhdr; nmhdr=(NMHDR*)lParam; switch(wParam) { case DISP_LISTVIEW: if(nmhdr->code==NM_CUSTOMDRAW) { LONG l=(LONG)TableDraw(lParam); SetWindowLong(hWnd, DWL_MSGRESULT, l); return TRUE; } else ... ... //function to color row. copied from code project LRESULT TableDraw (LPARAM lParam) { int iRow; LPNMLVCUSTOMDRAW pListDraw = (LPNMLVCUSTOMDRAW)lParam; switch(pListDraw->nmcd.dwDrawStage) { case CDDS_ITEMPREPAINT: //it never reach here iRow = (int)pListDraw->nmcd.dwItemSpec; if(iRow%2 == 0) { pListDraw->clrTextBk = RGB(202, 221,250); return CDRF_NEWFONT; } case CDDS_PREPAINT: return (CDRF_NOTIFYPOSTPAINT | CDRF_NOTIFYITEMDRAW); default: break; } return CDRF_DODEFAULT; }
Приложение представляет собой приложение с Многодокументным интерфейсом. а HWND, переданный в SetWindow long, является дочерним окном приложения. Код ошибки, который я получаю от функции GetLastError, равен 1413
Не могли бы вы дать мне знать, что я могу сделать? где я делаю неправильно?