MFC 改變某個單元格的字型顏色和背景色(轉)
阿新 • • 發佈:2022-05-18
原文:https://blog.csdn.net/myruo/article/details/83856211
場景:
需要不同的顏色來區分其他資料
操作步驟:
新增 NM_CUSTOMDRAW 訊息響應事件,或者手動新增
實現程式碼如下:
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR); if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage) { *pResult = CDRF_NOTIFYITEMDRAW; } else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage) { *pResult = CDRF_NOTIFYSUBITEMDRAW; } else if ((CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage) { int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec); CString strLoad; switch (pLVCD->iSubItem) { case 2: break; case 5: { COLORREF clrNewTextColor, clrNewBkColor; strLoad = m_list1.GetItemText(nItem, pLVCD->iSubItem); if (!strLoad.Compare(_T("成功"))) { clrNewTextColor = RGB(0, 255, 0); } else { clrNewTextColor = RGB(255, 0, 0); } clrNewBkColor = RGB(255, 255, 255); pLVCD->clrText = clrNewTextColor; pLVCD->clrTextBk = clrNewBkColor; *pResult = CDRF_DODEFAULT; break; } default: pLVCD->clrText = RGB(0, 0, 0); pLVCD->clrTextBk = RGB(255, 255, 255); *pResult = CDRF_DODEFAULT; break; } }