*pResult = CDRF_DODEFAULT; if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage ) { *pResult = CDRF_NOTIFYITEMDRAW; } else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage ) { int iRow = (int)pLVCD->nmcd.dwItemSpec;
bHighlighted = IsRowHighlighted(m_hWnd, iRow); if (bHighlighted) { pLVCD->clrText = g_MyClrFgHi; // Use my foreground hilite color pLVCD->clrTextBk = g_MyClrBgHi; // Use my background hilite color
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
static bool bHighlighted = false;
*pResult = CDRF_DODEFAULT; if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
int iRow = (int)pLVCD->nmcd.dwItemSpec;
bHighlighted = IsRowHighlighted(m_hWnd, iRow);
if (bHighlighted)
{
pLVCD->clrText = g_MyClrFgHi; // Use my foreground hilite color
pLVCD->clrTextBk = g_MyClrBgHi; // Use my background hilite color
EnableHighlighting(m_hWnd, iRow, false);
}
else if(iRow == Row)
{
pLVCD->clrText = g_MyClrItem;
}
*pResult = CDRF_DODEFAULT | CDRF_NOTIFYPOSTPAINT;
}
else if(CDDS_ITEMPOSTPAINT == pLVCD->nmcd.dwDrawStage)
{
if (bHighlighted)
{
int iRow = (int)pLVCD->nmcd.dwItemSpec; EnableHighlighting(m_hWnd, iRow, true);
} *pResult = CDRF_DODEFAULT; }
}
我想问下有没"巧妙"的方法,随便什么了,不一定要是重绘,可以达到目的,比如说我现在用的方法时,当选中某条记录的时候,在该位置Create出个小窗口,然后再取得item.sub的文本,再在dc下显示文本,图片,动画也都还可以,就是我觉得太垃圾,不想用这个