读书人

listbox如何改变指定项的颜色用SDK

发布时间: 2012-09-07 10:38:15 作者: rapoo

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消息

读书人网 >VC/MFC

热点推荐