void CSortListCtrl::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
//LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
//*pResult = 0;
*pResult=CDRF_NOTIFYITEMDRAW ;
LPNMLVCUSTOMDRAW pDraw=(LPNMLVCUSTOMDRAW)pNMHDR;
DWORD dwDrawStage=pDraw->nmcd.dwDrawStage;
int nID=pDraw->nmcd.dwItemSpec;//
int selID=GetNextItem(-1,LVNI_SELECTED);
int subItem=pDraw->iSubItem;
//
if((nID==selID) && (subItem==0))
{
CDC* pdc=CDC::FromHandle(pDraw->nmcd.hdc);
//
CRect rc;
GetItemRect(selID,&rc,LVIR_LABEL);
CString txt=GetItemText(selID,0);
//
CSize sz=pdc->GetOutputTextExtent(txt);
// 2015-2-11 繪製前部 checkbox
CRect rtFrm(rc);
rtFrm.right = rc.left;
rtFrm.left = rc.left -15;
rtFrm.DeflateRect(1,1);
pdc->DrawFrameControl(rtFrm, DFC_BUTTON, DFCS_BUTTONCHECK|DFCS_FLAT|DFCS_CHECKED);
rc.right=rc.left+sz.cx+8;
rc.DeflateRect(1,1);
//
DWORD clr=GetSysColor(COLOR_HIGHLIGHT);
pdc->FillSolidRect(&rc,clr);
//
pdc->SetTextColor(RGB(255,255,255));//white
pdc->SetBkColor(clr);
//文字往右偏移一點 好看
rc.OffsetRect(1,0);
pdc->TextOut(rc.left,rc.top,txt);
*pResult |= CDRF_SKIPDEFAULT;
}
}
void CTreeCtrlEx::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
//*pResult = 0;
LPNMTVCUSTOMDRAW pDraw=(LPNMTVCUSTOMDRAW)pNMHDR;
DWORD dwDrawStage=pDraw->nmcd.dwDrawStage;
UINT uItemState =pDraw->nmcd.uItemState;
*pResult=CDRF_NOTIFYITEMDRAW; //必須的 否則不起作用
if((dwDrawStage & CDDS_ITEM) && (uItemState & CDIS_SELECTED) )
{
pDraw->clrText = RGB(255,255,255);
pDraw->clrTextBk = RGB(0,125,255);
}
}
借鑑別人文章 http://www.360doc.com/content/12/0327/18/7431010_198347847.shtml
http://blog.csdn.net/hlb0924/article/details/21288467