SDK ListView改变某一行某一列的文字颜色/背景颜色

来源:互联网 发布:ubuntu 中文环境 编辑:程序博客网 时间:2024/06/08 06:52

注册窗口类,CreateWindowEx创建窗口,同样用这个函数创建一个ListView,添加一些ITEM。

在窗口消息处理函数中处理WM_NOTIFY的NM_CUSTOMDRAW消息,代码框架如下

LRESULT DoMsg(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){switch (uMsg){case WM_CREATE:{//do some thing}break;case WM_CLOSE:{//do some thing}break;case WM_NOTIFY:{LPNMHDR pNmhdr = (LPNMHDR)lParam;switch (pNmhdr->code){case NM_CUSTOMDRAW:{//请确保是ListView的消息,这里未判断LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam;switch (lplvcd->nmcd.dwDrawStage){case CDDS_PREPAINT:{return CDRF_NOTIFYSUBITEMDRAW;} break;case CDDS_ITEMPREPAINT:{return CDRF_NOTIFYSUBITEMDRAW;}break;case (CDDS_ITEMPREPAINT|CDDS_SUBITEM):{/*lplvcd->nmcd.dwItemSpec//行索引lplvcd->iSubItem//列索引lplvcd->clrText = RGB(255, 0, 0);//改变文字颜色lplvcd->clrTextBk//背景颜色,未测试*/return CDRF_DODEFAULT;}break;}}break;default:break;}}break;default:return DefWindowProc(hWnd, uMsg, wParam, lParam);}return S_OK;}


需要注意的是,如果你不打算改变某SubItem的颜色,也要对clrText进行修改,否则使用的就是上一次的颜色。

更多信息请参阅MSDN,关键字"NM_CUSTOMDRAW"

原创粉丝点击