修改CListCtrl Item 样式。OnCustomdraw

 
afx_msg void OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult);

ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, &C_CodeList::OnNMCustomdrawList1)

void C_CodeList::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
    // TODO: Add your control notification handler code here
    LPNMLVCUSTOMDRAW pnmCustDraw   =   (LPNMLVCUSTOMDRAW)pNMHDR;

    TRACEINFO(L"OnNMCustomdrawList1");
    switch(pnmCustDraw->nmcd.dwDrawStage)
    { 
    case   CDDS_PREPAINT: 
        *pResult = CDRF_NOTIFYITEMDRAW ;
        break; 

    case CDDS_ITEMPREPAINT:
        {
            COLORREF clrCodeInvalidColor;
            clrCodeInvalidColor = RGB(0xff, 0x00, 0x00);
            int    nItem = static_cast<int>( pnmCustDraw->nmcd.dwItemSpec );
            int    nSubItem=pnmCustDraw->iSubItem;

            if(m_pCurDocument != NULL)
            {
                IGPBCPage     * pCurPage = m_pCurDocument->GetSelectPage();
                if(pCurPage != NULL)
                {
                    IGPBCShape * pShape = pCurPage->GetShapeAt(nItem);
                    if(pShape != NULL)
                    {
                        if(!pShape->IsCodeValid())
                            pnmCustDraw->clrTextBk    =    clrCodeInvalidColor;
                    }
                }

            }
            break;
        }
    case CDDS_SUBITEM:
        {       
            COLORREF clrCodeInvalidColor;
            clrCodeInvalidColor = RGB(0xff, 0x00, 0x00);
            int    nItem = static_cast<int>( pnmCustDraw->nmcd.dwItemSpec );
            int    nSubItem=pnmCustDraw->iSubItem;

            if(m_pCurDocument != NULL)
            {
                IGPBCPage     * pCurPage = m_pCurDocument->GetSelectPage();
                if(pCurPage != NULL)
                {
                    IGPBCShape * pShape = pCurPage->GetShapeAt(nItem);
                    if(pShape != NULL)
                    {
                        if(!pShape->IsCodeValid())
                            pnmCustDraw->clrTextBk    =    clrCodeInvalidColor;
                    }
                }

            }
            break;
        }

    case   CDDS_ITEMPOSTPAINT:
        { 
            TRACEINFO(L"CDDS_ITEMPOSTPAINT");
            int iItem = pnmCustDraw->nmcd.dwItemSpec; 
            CDC dc; 
            dc.Attach(pnmCustDraw->nmcd.hdc); 
            CRect rectDest; 

            m_lcCodeList.GetItemRect(iItem,rectDest,LVIR_ICON); 
            dc.DPtoLP(rectDest); 
            CBrush brush(0xffff0000);
            dc.FillRect(&rectDest, &brush);
            dc.Detach(); 
            *pResult   =   CDRF_DODEFAULT; 
            break; 
        } 
    default: 
        *pResult   =   CDRF_DODEFAULT; 
        break; 
    }  
    return ;
}
发布了9 篇原创文章 · 获赞 4 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览