//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())
本文详细介绍了如何在自定义列表控件中实现特定的绘制策略,并通过调整颜色来突出显示需要强调的项目。通过解析提供的代码片段,了解如何根据不同阶段进行颜色配置,以及如何定位特定项进行个性化展示。

7099

被折叠的 条评论
为什么被折叠?



