松鼠的博客

导航

统计

一个自画的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   Xproer-松鼠  阅读(555)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示