关于LIST CONTROL某一行满足条件改变背景颜色的有关问题
关于LIST CONTROL某一行满足条件改变背景颜色的问题
m_static_list.SetItemText(0,5,"OK");
如果满足这一列的条件“OK”,就显绿色,其它的都是红色。
------解决方案--------------------
如: int nItem = (int)lpNMCustomDraw->nmcd.dwItemSpec;
int nSubItem = lpNMCustomDraw->iSubItem;
COLORREF crText;
if ( (pLVCD->nmcd.dwItemSpec % 3) == 0 ) crText = RGB(255,0,0);
else if ( (pLVCD->nmcd.dwItemSpec % 3) == 1 ) crText = RGB(0,255,0);
else crText = RGB(128,128,255);
// Store the color back in the NMLVCUSTOMDRAW struct.
pLVCD->clrTextBk = crText;
------解决方案--------------------
用SetItemData即可。
比如,有一行index=3正在进行读写,可以令SetItemData(3,1);
void fabandlg::OnCustomdrawList(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 )
{
COLORREF crBk;
if (??这个判断应该怎么写?? )//这个判断
crBk =RGB(22,232,23);
else
crBk = RGB(240,47,249);
pLVCD->clrTextBk = crBk;
*pResult = CDRF_NEWFONT;
}
m_static_list.SetItemText(0,5,"OK");
如果满足这一列的条件“OK”,就显绿色,其它的都是红色。
------解决方案--------------------
如: int nItem = (int)lpNMCustomDraw->nmcd.dwItemSpec;
int nSubItem = lpNMCustomDraw->iSubItem;
COLORREF crText;
if ( (pLVCD->nmcd.dwItemSpec % 3) == 0 ) crText = RGB(255,0,0);
else if ( (pLVCD->nmcd.dwItemSpec % 3) == 1 ) crText = RGB(0,255,0);
else crText = RGB(128,128,255);
// Store the color back in the NMLVCUSTOMDRAW struct.
pLVCD->clrTextBk = crText;
------解决方案--------------------
用SetItemData即可。
比如,有一行index=3正在进行读写,可以令SetItemData(3,1);