void CView::OnPaint() 
{
CPaintDC dc(this);
dc.Rectangle(0,0,1000,1000); CDC dcCache;
CDC dcDest;

  CBitmap bitmapChche;
CBitmap bitmapDesc;  dcCache.CreateCompatibleDC(NULL);
dcDest.CreateCompatibleDC(NULL);  bitmapChche.CreateCompatibleBitmap(&dcCache,500, 500);
bitmapDesc.CreateCompatibleBitmap(&dcDest,500, 500);
  dcCache.SelectObject(bitmapChche);
dcDest.SelectObject(bitmapDesc); CRect rect(0,0,500,500);
  dcCache.Rectangle(0,0,500,500);
dcDest.Rectangle(rect);
dcDest.Ellipse(rect);
dcDest.DrawText("123456",&rect,DT_CENTER|DT_SINGLELINE|DT_VCENTER);//  情况1:正常
//  将dcDest 直接“透”到目标dc上
// ::TransparentBlt(dc.m_hDC,0,0,500,500,dcDest.m_hDC,0,0,500,500,RGB(255,255,255));//  情况2:不正常,画面奇怪的翻转,不好形容,最好试一下。
//  将dcDest 先“透”到dcCache上,再bitblt到目标dc上
::TransparentBlt(dcCache.m_hDC,0,0,500,500,dcDest.m_hDC,0,0,500,500,RGB(255,255,255));
  dc.BitBlt(0,0,500,500,&dcCache,0,0,SRCCOPY); return;
}