

//消息映射中添加
ON_NOTIFY(NM_CUSTOMDRAW,IDC_LIST_DATA,OnCustomdrawListCtrl)
//头文件添加
afx_msg void OnCustomdrawListCtrl(NMHDR *pNMHDR, LRESULT *pResult);
/************************************************************************/
/* CtrlList每行不同颜色
/************************************************************************/
void CDbMiddleSrvDlg::OnCustomdrawListCtrl(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
// Take the default processing unless we set this to something else below.
*pResult = CDRF_DODEFAULT;
m_ctrlListCtrlData.SetExtendedStyle(m_ctrlListCtrlData.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
//
// First thing - check the draw stage. If it's the control's prepaint
// stage, then tell Windows we want messages for every item.
//m_ctrlListCtrlData.SetBkColor(RGB(0,0,0));
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 )
{
COLORREF clrNewTextColor, clrNewBkColor;
int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );
CString strTemp = m_ctrlListCtrlData.GetItemText(nItem,2/*pLVCD->iSubItem*/);
if("ÔËÐÐ"==strTemp)
{
clrNewTextColor = RGB(0,255,0); //Set the text to red
clrNewBkColor = RGB(0,0,0); //Set the bkgrnd color to blue
}
else
{
clrNewTextColor = RGB(255,0,0); //Leave the text black
clrNewBkColor = RGB(0,0,0); //leave the bkgrnd color white
}
pLVCD->clrText = clrNewTextColor;
pLVCD->clrTextBk = clrNewBkColor;
//m_ctrlListCtrlData.Invalidate();
// Tell Windows to paint the control itself.
*pResult = CDRF_DODEFAULT;
}
m_ctrlListCtrlData.UpdateWindow();
}
ON_NOTIFY(NM_CUSTOMDRAW,IDC_LIST_DATA,OnCustomdrawListCtrl)
//头文件添加
afx_msg void OnCustomdrawListCtrl(NMHDR *pNMHDR, LRESULT *pResult);
/************************************************************************/
/* CtrlList每行不同颜色
/************************************************************************/
void CDbMiddleSrvDlg::OnCustomdrawListCtrl(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
// Take the default processing unless we set this to something else below.
*pResult = CDRF_DODEFAULT;
m_ctrlListCtrlData.SetExtendedStyle(m_ctrlListCtrlData.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
//
// First thing - check the draw stage. If it's the control's prepaint
// stage, then tell Windows we want messages for every item.
//m_ctrlListCtrlData.SetBkColor(RGB(0,0,0));
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 )
{
COLORREF clrNewTextColor, clrNewBkColor;
int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );
CString strTemp = m_ctrlListCtrlData.GetItemText(nItem,2/*pLVCD->iSubItem*/);
if("ÔËÐÐ"==strTemp)
{
clrNewTextColor = RGB(0,255,0); //Set the text to red
clrNewBkColor = RGB(0,0,0); //Set the bkgrnd color to blue
}
else
{
clrNewTextColor = RGB(255,0,0); //Leave the text black
clrNewBkColor = RGB(0,0,0); //leave the bkgrnd color white
}
pLVCD->clrText = clrNewTextColor;
pLVCD->clrTextBk = clrNewBkColor;
//m_ctrlListCtrlData.Invalidate();
// Tell Windows to paint the control itself.
*pResult = CDRF_DODEFAULT;
}
m_ctrlListCtrlData.UpdateWindow();
}