在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 );
}