//test6dlg.h
afx_msg void OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult );
//testdlg.cpp
BEGIN_MESSAGE_MAP(CTest6Dlg, CDialog)
ON_NOTIFY ( NM_CUSTOMDRAW, IDC_LISTCTRL, OnCustomdrawMyList )
END_MESSAGE_MAP()
void CTest6Dlg::OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult )
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = CDRF_DODEFAULT;
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 )
{
COLORREF clrNewTextColor, clrNewBkColor;
int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );
if( (nItem == iRedrawItem))
{
clrNewTextColor = RGB(255,0,0);
clrNewBkColor = RGB(255,255,0);
}
else
{
clrNewTextColor = RGB(0,0,0);
clrNewBkColor = RGB(255,255,255);
}
pLVCD->clrText = clrNewTextColor;
pLVCD->clrTextBk = clrNewBkColor;
*pResult = CDRF_DODEFAULT;
}
}
iRedrawItem就是需要改变的行
请在找到你需要改变的行后调用
iRedrawItem = 找到的项
m_List.RedrawItems(0, m_List.GetItemCount())
afx_msg void OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult );
//testdlg.cpp
BEGIN_MESSAGE_MAP(CTest6Dlg, CDialog)
ON_NOTIFY ( NM_CUSTOMDRAW, IDC_LISTCTRL, OnCustomdrawMyList )
END_MESSAGE_MAP()
void CTest6Dlg::OnCustomdrawMyList ( NMHDR* pNMHDR, LRESULT* pResult )
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = CDRF_DODEFAULT;
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 )
{
COLORREF clrNewTextColor, clrNewBkColor;
int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );
if( (nItem == iRedrawItem))
{
clrNewTextColor = RGB(255,0,0);
clrNewBkColor = RGB(255,255,0);
}
else
{
clrNewTextColor = RGB(0,0,0);
clrNewBkColor = RGB(255,255,255);
}
pLVCD->clrText = clrNewTextColor;
pLVCD->clrTextBk = clrNewBkColor;
*pResult = CDRF_DODEFAULT;
}
}
iRedrawItem就是需要改变的行
请在找到你需要改变的行后调用
iRedrawItem = 找到的项
m_List.RedrawItems(0, m_List.GetItemCount())