大家看一下,为什么我一直只收到 CDDS_PREPAINT, 收不到CDDS_ITEMPREPAINT 呢?
case WM_NOTIFY:
{
LPNMHDR lpHdr = (LPNMHDR)lParam; switch (lpHdr->idFrom)
{
case IDTRACK1:
{
if (lpHdr->code == NM_CUSTOMDRAW)
{
LPNMCUSTOMDRAW lpCustomDraw = (LPNMCUSTOMDRAW)lParam; switch (lpCustomDraw->dwDrawStage)
{
case CDDS_PREPAINT:
MessageBox(NULL, TEXT("CDDS_PREPAINT"), TEXT("NOTE"), MB_OK);
return CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT:
MessageBox(NULL, TEXT("CDDS_ITEMPREPAINT"), TEXT("NOTE"), MB_OK);
return CDRF_DODEFAULT;
default:
return TRUE;
}
}
case IDTRACK2:
............................
}
case WM_NOTIFY:
{
LPNMHDR lpHdr = (LPNMHDR)lParam; switch (lpHdr->idFrom)
{
case IDTRACK1:
{
if (lpHdr->code == NM_CUSTOMDRAW)
{
LPNMCUSTOMDRAW lpCustomDraw = (LPNMCUSTOMDRAW)lParam; switch (lpCustomDraw->dwDrawStage)
{
case CDDS_PREPAINT:
MessageBox(NULL, TEXT("CDDS_PREPAINT"), TEXT("NOTE"), MB_OK);
return CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT:
MessageBox(NULL, TEXT("CDDS_ITEMPREPAINT"), TEXT("NOTE"), MB_OK);
return CDRF_DODEFAULT;
default:
return TRUE;
}
}
case IDTRACK2:
............................
}
感觉问题出在这一点代码应该出现在控件的消息(NM_CUSTOMDRAW)响应中,而不是在父窗口。
switch (lpCustomDraw->dwDrawStage)
{case CDDS_PREPAINT:
MessageBox(NULL, TEXT("CDDS_PREPAINT"), TEXT("NOTE"), MB_OK);
return CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT:
MessageBox(NULL, TEXT("CDDS_ITEMPREPAINT"), TEXT("NOTE"), MB_OK);
return CDRF_DODEFAULT;
default:
return TRUE;
}
看这个帖子