ListCtrl和CTreeCtrl 实际可用 失去焦点 后自定义颜色

来源:互联网 发布:知豆电动汽车电池寿命 编辑:程序博客网 时间:2024/05/22 21:39

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 绘制前部 checkboxCRect 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));//whitepdc->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

0 0
原创粉丝点击