ListCtrl设置字体,颜色,对齐方式

1.设置ListCtrl属性为Owner Draw Fixed;
2.重写DrawItem
void CMyListCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
    CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
    CRect rect(lpDrawItemStruct->rcItem);                //取得绘制区域
    int iItem = lpDrawItemStruct->itemID;                  //取得行
    TCHAR szBuff[MAX_PATH];

    LVITEM lvItem;               //取得Item所需LVITEM结构体
    int iColumn = 0;            //DRAWITEMSTRUCT中不包含有item的列信息

    CHeaderCtrl *Head = GetHeaderCtrl();
    int iMax = Head->GetItemCount();             //取得列总数
  
    while(iMax > iColumn)
   {
        //以列为单位进行处理,可根据自己的要求进行处理
        //取得Item所需设置
        lvItem.mask = LVIF_TEXT;// | LVIF_IMAGE | LVIF_STATE | LVIF_INDENT;
        lvItem.iItem = iItem;
        lvItem.iSubItem = iColumn;
        lvItem.pszText = szBuff;
        lvItem.cchTextMax = sizeof(szBuff);
 //    lvItem.stateMask = LVIS_ACTIVATING | LVIS_FOCUSED | LVIS_SELECTED | LVIS_STATEIMAGEMASK;


        COLORREF txtColor;               //文本颜色
        DWORD uformat;                    //文本格式
        CFont font;                               //文本字体
        LOGFONT lf;
        if (iColumn < 1)
        {
            //设置字体
            GetFont()->GetLogFont( &lf );
            lf.lfHeight = abs(lf.lfHeight) + 2;
            lf.lfWeight = FW_BOLD;
            VERIFY(font.CreateFontIndirect(&lf));
            pDC->SelectObject(font.m_hObject);
            //设置颜色
            txtColor = GetSysColor(COLOR_WINDOWTEXT);
            pDC->SetTextColor(txtColor);
            //取得绘制区域
            GetSubItemRect(iItem, iColumn, LVIR_BOUNDS, rect);
            //设置文本格式
            uformat = DT_WORD_ELLIPSIS | DT_SINGLELINE | DT_LEFT | DT_VCENTER;
        }
        else
        {
            GetFont()->GetLogFont( &lf );
            txtColor = GetSysColor(COLOR_GRAYTEXT);
            pDC->SelectObject(GetFont()->m_hObject);
            pDC->SetTextColor(txtColor );
            GetSubItemRect(iItem, iColumn, LVIR_BOUNDS, rect);
            uformat = DT_WORD_ELLIPSIS | DT_SINGLELINE | DT_RIGHT | DT_VCENTER;
        }
       
        GetItem(&lvItem);
        pDC->DrawText(lvItem.pszText, rect, uformat);                //绘制文本

        iColumn++;
    }
}

【转自: http://blog.csdn.net/zwdheo/article/details/2065576
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值