VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 855|回复: 0

[求助] CListCtrl控件DrawItem中自绘问题,同志们帮忙看看,谢谢了!

[复制链接]
13_avatar_middle
online_vip 发表于 2016-5-22 23:36:45 | 显示全部楼层 |阅读模式
如题,下面是我的代码,我一共插入了10行数据,为什么运行后客户区是黑色的,而且没有文字,我明明填充为蓝色了,不知道是哪里出来问题,同志们帮忙看看,谢谢了!

void CEUIListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{

        HDC hDC = lpDrawItemStruct->hDC;
        CRect rcItem = lpDrawItemStruct->rcItem;    //一个子项行的区域
        int nRow = lpDrawItemStruct->itemID;
        CRect rcClient;                                //整个ListCtrl控件的客户区域,不包括列表头区域
        GetClientRect(rcClient);
        rcItem.right = rcClient.right;
        CDC* pDC = CDC::FromHandle(hDC);

        CDC pMemDC;
        pMemDC.CreateCompatibleDC(pDC);
        CBitmap bitmap;
        bitmap.CreateCompatibleBitmap(pDC, rcItem.Width(), rcItem.Height());
        CBitmap* bOldBitmap = pMemDC.SelectObject(&bitmap);
        int nOldMode = pMemDC.SetBkMode(TRANSPARENT);
        pMemDC.FillSolidRect(rcItem, RGB(0, 0 ,255));


        CString strText;
        int nColCount = m_HeaderCtrl.GetItemCount();
        for (int col = 0; col < nColCount; col++)
        {
                strText = GetItemText(nRow, col);
                CRect rcText;
                GetSubItemRect(nRow, col, LVIR_LABEL, rcText);
                pMemDC.DrawText(strText, strText.GetLength(), rcText, DT_CENTER | DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);
        }

        pDC->BitBlt(rcItem.left, rcItem.top,rcItem.Width(), rcItem.Height(), &pMemDC, 0, 0, SRCCOPY);
        pMemDC.SetBkMode(nOldMode);
        pMemDC.SelectObject(bOldBitmap);
        bitmap.DeleteObject();
        pMemDC.DeleteDC();
}




上一篇:阻塞服务器如何关闭了重连客户端
下一篇:完全平方数的C语言源代码 问题
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-23 12:13

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表