listbox怎么改变指定项的颜色,用SDK
现在我已经能够在创建列表的时候改变颜色,用的以下代码
- C/C++ code
case WM_DRAWITEM:if((UINT) wParam==ID_LIST){LPDRAWITEMSTRUCT pDI;HBURSH brsh;char szClick[50]; pDI=(LPDRAWITEMSTRUCT) lParam; brsh=CreateSolidBrush(RGB(255, 0,0)); FillRect(pDI->hDC,&pDI->rcItem,brsh);pDI-> DeleteObject(brsh); SetBkMode(pDI->hDC,TRANSPARENT); SendMessage(hList,LB_GETTEXT,pDI->itemID,(LPARAM)szClick); DrawText(pDI->hDC, szClick, strlen(szClick), &pDI->rcItem, dwStyle); // }按照以上代码,listbox创建项的时候就会绘制成红色,但是我现在还需要指定把某项绘制成另一种颜色,该怎么做呢,目前困难在于假如我要把第二项变色,我目前无法得到其相应的hdc,和rect 上面的代码是在列表建立的时候lparam就有相应的hdc和rect,如果我要在中途改变某项颜色,我得不到指定项的hdc和rect
[解决办法]
楼主的意思我明白了,是要在某个时候按照自己的特殊要求修改对吧
你的listbox肯定有parent window对吧,当你需要重新修改颜色的时候,你用parent window的hwnd调用 InvalidateRect就会激发WM_DRAWITEM消息