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