CTreeCtrl单独节点颜色设置

在OnPaint()中调用PaintSelectItemTextColor()方法

void CNewTreeCtrl::_PaintSelectItemTextColor(CPaintDC &dc)
{
 CDC memDC;
 //从当前DC创建内存对象
 memDC.CreateCompatibleDC( &dc );
 
 //定义CRect对象,用来确定区域
 CRect rcClip, rcClient;
 //获取当前对象的边界区域
 dc.GetClipBox( &rcClip );
 //获取当前对象的用户区域
 GetClientRect(&rcClient);
 
 //创建一个bmp文件,作为memDC的内容
 //该文件的大小与用于区域相同
 CBitmap bitmap;
 bitmap.CreateCompatibleBitmap( &dc, rcClient.Width(), rcClient.Height() );
 memDC.SelectObject( &bitmap );
 
 //通过对象的边界区域创建CRgn对象
 CRgn rgn;
 rgn.CreateRectRgnIndirect( &rcClip );
 memDC.SelectClipRgn(&rgn);
 rgn.DeleteObject();
 
 //首先让控件自己进行默认的绘制,绘制到内存中
 CWnd::DefWindowProc( WM_PAINT, (WPARAM)memDC.m_hDC, 0 );
 
 //获取树状控件的第一个节点
 HTREEITEM hItem = GetSelectedItem();
 
 CFont *pFontDC;
 CFont fontDC;
 LOGFONT logfont;
 
 // 用户没有定义,使用系统字体
 CFont *pFont = GetFont();
 pFont->GetLogFont( &logfont );
  
 //创建字体
 fontDC.CreateFontIndirect( &logfont );
 pFontDC = memDC.SelectObject( &fontDC );
  
 memDC.SetTextColor( RGB(255, 0, 0) );
 
 //获取节点文字
 CString sItem = GetItemText( hItem );
 
 //获取节点区域
 CRect rect;
 GetItemRect( hItem, &rect, TRUE );
 //设置背景色为系统色
 memDC.SetBkColor( GetSysColor( COLOR_WINDOW ) );
 //向内存中的图片写入内容,为该节点的内容
 memDC.TextOut( rect.left+2, rect.top+1, sItem );
 
 memDC.SelectObject( pFontDC );
    
 dc.BitBlt( rcClip.left, rcClip.top, rcClip.Width(), rcClip.Height(), &memDC, rcClip.left, rcClip.top, SRCCOPY );
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值