修改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 ;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值