松鼠的博客

导航

一个自画的list control

void CNewListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
    TRACE(
"need draw item\n");
    CDC 
*pdc = CDC::FromHandle(lpDrawItemStruct->hDC);
    CRect lrect 
= lpDrawItemStruct->rcItem;
    CBrush lb;
    lb.CreateSolidBrush(RGB(
234,233225));
    pdc
->FrameRect(&lrect, &lb);
    lrect.DeflateRect(
0011);

    
    LVITEM rItem;
    
char buf[255];
    rItem.mask 
= LVIF_TEXT | LVIF_STATE;
    rItem.iItem 
= lpDrawItemStruct->itemID;
    rItem.iSubItem 
= 1;
    memset(buf, 
0255);
    rItem.pszText 
= buf;
    rItem.cchTextMax 
= 255;
    rItem.stateMask 
= LVIS_SELECTED;
    BOOL ret 
= this->GetItem(&rItem);

    
if (rItem.state & LVIS_SELECTED)
        pdc
->FillSolidRect(lrect, RGB(231243229));
    
else
        pdc
->FillSolidRect(lrect, RGB(255255255));
        

    CDC ldc;
    ldc.CreateCompatibleDC(pdc);
    CBitmap lbmp;
    lbmp.CreateCompatibleBitmap(pdc, ICON_SHOW_SIZE, ICON_SHOW_SIZE);
    ldc.SelectObject(lbmp);
    
//ldc.DrawIcon(0, 0, m_hIcon);
    m_imagelist.Draw(&ldc, lpDrawItemStruct->itemID % 2, CPoint(00), ILD_TRANSPARENT);
    BLENDFUNCTION ab;
    ab.BlendOp 
= AC_SRC_OVER;
    ab.BlendFlags 
= 0;
    ab.SourceConstantAlpha 
= 0xFF;
    ab.AlphaFormat 
= AC_SRC_ALPHA;

    AlphaBlend(pdc
->GetSafeHdc(), lrect.left, lrect.top, ICON_SHOW_SIZE, ICON_SHOW_SIZE, ldc.GetSafeHdc(), 00, ICON_SHOW_SIZE, ICON_SHOW_SIZE, ab);

    CFont lfont;
    lfont.CreateFont(
12000, FW_BOLD ,010, GB2312_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH ,"宋体");
    CFont
* pold = pdc->SelectObject(&lfont);


    lrect.DeflateRect(ICON_SHOW_SIZE 
+ 2600);
    pdc
->DrawText("ACESEE 10", lrect, DT_LEFT | DT_TOP | DT_SINGLELINE);
    pdc
->SelectObject(pold);

    CString itemtext 
= rItem.pszText;
    pdc
->SetTextColor(RGB(22300));
    lrect.DeflateRect(
85000);
    pdc
->DrawText("", lrect, DT_LEFT | DT_TOP | DT_SINGLELINE);


    pdc
->SetTextColor(RGB(0,128,0));
    lrect.DeflateRect(
-851700);
    pdc
->DrawText(itemtext, lrect, DT_VCENTER | DT_LEFT | DT_SINGLELINE);
    pdc
->SetTextColor(RGB(0,0,0));
}

posted on 2008-08-01 09:54  Xproer-松鼠  阅读(563)  评论(0)    收藏  举报