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
++;
    }

}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值