树控件自绘//为什么wm_paint消息里SetTextColor设置字体颜色不行//
void CTreeCtrlEx::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rcClient;
GetClientRect(rcClient); //获取客户区
CDC memDC;
CDC memDC_Father;
memDC.CreateCompatibleDC(&dc);
memDC_Father.CreateCompatibleDC(&dc);
//SetTextColor(RGB(255,255,255));
CBitmap bitmap;
CBitmap bitmap_father;
bitmap.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height());
bitmap_father.CreateCompatibleBitmap(&dc,rcClient.Width(),rcClient.Height());
CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);
CBitmap* pOldBitmap_Father = memDC_Father.SelectObject(&bitmap_father);
GradientFillRect(memDC.m_hDC,rcClient,0xFDE7C5,0xffffff,false);
CTreeCtrl::DefWindowProc(WM_PAINT, (WPARAM)memDC_Father.GetSafeHdc(), 0);
COLORREF cr = GetBkColor();
if (cr == -1)
cr = GetSysColor(COLOR_WINDOW);
::TransparentBlt(memDC.GetSafeHdc(), 0, 0, rcClient.Width(), rcClient.Height(), memDC_Father.GetSafeHdc(), 0, 0, rcClient.Width(), rcClient.Height(), cr);
dc.BitBlt(rcClient.left,rcClient.top,rcClient.Width(),rcClient.Height(),&memDC,rcClient.left,rcClient.top,SRCCOPY);
memDC.SelectObject(pOldBitmap);
memDC.DeleteDC();
}