15,979
社区成员
发帖
与我相关
我的任务
分享
case NM_CUSTOMDRAW:
{
LPNMLVCUSTOMDRAW lpnmcd = (LPNMLVCUSTOMDRAW)pnmh;
if(lpnmcd ->nmcd.dwDrawStage ==CDDS_PREPAINT)
{
return CDRF_NOTIFYITEMDRAW | CDRF_NOTIFYPOSTPAINT;
}
else if(lpnmcd ->nmcd.dwDrawStage ==CDDS_ITEMPREPAINT)
{
return CDRF_NOTIFYSUBITEMDRAW;
}
else if(lpnmcd ->nmcd.dwDrawStage == (CDDS_SUBITEM | CDDS_ITEMPREPAINT))
{
int iItem = lpnmcd->nmcd.dwItemSpec;
int iSubItem = lpnmcd->iSubItem;
if(iItem >= 0 && iSubItem >= 0)
{
RECT rSubItem = {0};
HDC hDC = lpnmcd->nmcd.hdc;
GetSubItemRect(iItem, iSubItem, LVIR_LABEL, &rSubItem);
if (iSubItem==0)
{
rSubItem.left=0; // 第一列画到最左
}
bool bSelected = false;
if(GetItemState(iItem, LVIS_SELECTED))
{
bSelected = true;
}
bool bFocus = false;
if(IsChild(::GetFocus()) || m_hWnd == ::GetFocus())
{
bFocus = true;
}
//双缓冲
CRect rDraw(rSubItem);
CMemoryDC memDC(lpnmcd->nmcd.hdc,rDraw);
memDC.SetBkMode(TRANSPARENT);
memDC.SetTextColor(RGB(0,0,0)); // 文本颜色(可以通过iItem和iSubItem判断是个单元格)
CFont font;
font.CreateFont(12, // nHeight
0, // nWidth
0, // nEscapement
0, // nOrientation
FW_NORMAL, // nWeight
FALSE, // bItalic
FALSE, // bUnderline
0, // cStrikeOut
ANSI_CHARSET, // nCharSet
OUT_DEFAULT_PRECIS, // nOutPrecision
CLIP_DEFAULT_PRECIS, // nClipPrecision
DEFAULT_QUALITY, // nQuality
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
_T("宋体"));
memDC.SelectFont(font);
CString strText;
GetItemText(iItem,iSubItem,strText);
strText+=_T(" ");
if (iItem%2==0) //奇数行
{
draw_row_bg(memDC,rDraw,bSelected,bFocus,true);
}
else // 偶数行
{
draw_row_bg(memDC,rDraw,bSelected,bFocus,false);
}
memDC.DrawText(strText,strText.GetLength(),&rDraw,DT_SINGLELINE|DT_RIGHT|DT_VCENTER|DT_END_ELLIPSIS);
}
return CDRF_SKIPDEFAULT;
}
}
}
break;
default:
break;
}