1.改變控件背景顏色:
--------------------
m_List1.SetTextBkColor(RGB(165,254,236));
m_List1.SetBkColor(RGB(165,254,236));
-------------------------------------------------------------------------------
2.改變列表控件單元格顏色
-------------------------
1.添加OnNMCustomdraw函數
2.pNMCD->nmcd.dwItemSpec 是項索引
只有?CDRF_NOTIFYSUBITEMDRAW?pNMCD->iSubItem才是子項索引,否則為0.
3.*pResult = CDRF_DODEFAULT;表示可以開始繪製,不再做其他處理
4.*pResult = CDRF_NOTIFYITEMDRAW;通知繪製整行消息 ,讓nNMCustomdraw得到 CDDS_ITEMPREPAINT消息,此通知要在CDDS_PREPAINT中發出
5.*pResult = CDRF_NOTIFYSUBITEMDRAW;通知繪製每個表格項 ,讓nNMCustomdraw得到CDDS_SUBITEM |CDDS_ITEMPREPAINT消息,此通知要在 CDDS_ITEMPREPAINT中發出
6.pLVCD->nmcd.dwItemSpec表示當前行的索引值
pLVCD->iSubItem表示當前列的索引值
pLVCD->clrText代表當前單元格字體的顏色
pLVCD->clrTextBk代表當前單元格背景色
7.CDDS_PREPAINT是一個繪製前信息
//網上例子:1
//設置單元格顏色。
m_MyListCtrl.SetItemColor(0,1,RGB(255,0,0),RGB(0,255,0));//沒有試過
//網上例子:2//可以調通
if ( CDDS_PREPAINT ==pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
// This is the notification message for an item. We'll request
// notifications before each subitem's prepaint stage.
*pResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{
int nItem=static_cast<int>(pLVCD->nmcd.dwItemSpec );
switch(pLVCD->iSubItem)
{
case 2:
case 4:
{
if (nItem % 2 == 0)
{
COLORREF clrNewTextColor, clrNewBkColor;
clrNewTextColor = RGB(0,0,0);
clrNewBkColor = RGB(198,202,198);
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;
}
}
//本人改進://pass 顯示綠色,fail 顯示紅色
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 );
if((pLVCD->iSubItem==5)&&(m_List2.GetItemText(nItem,5)=="Pass"))
{
COLORREF clrNewBkColor;
clrNewBkColor = RGB(0,255,0);
pLVCD->clrTextBk =clrNewBkColor;
*pResult = CDRF_DODEFAULT;
}
else if((pLVCD->iSubItem==5)&&(m_List2.GetItemText(nItem,5)=="Fail"))
{
COLORREF clrNewBkColor;
clrNewBkColor = RGB(255,0,0);
pLVCD->clrTextBk =clrNewBkColor;
*pResult = CDRF_DODEFAULT;
}
}