void CTest1Dlg::OnPaint() 
{
//获取客户区矩形
RECT ClientRect;
GetClientRect(&ClientRect); //创建与视频显示兼容的内存设备上下文
CPaintDC PaintDC(this);
CDC MemDC;
MemDC.CreateCompatibleDC (&PaintDC); //创建与视频显示兼容的位图
CBitmap MemBitmap;
MemBitmap.CreateCompatibleBitmap (&PaintDC,
ClientRect.right ,ClientRect.bottom ); //将新创建的兼容位图选入新创建的内存设备上下文
CBitmap *pOldBitmap=
MemDC.SelectObject (&MemBitmap); //清除位图背景
MemDC.FillSolidRect (0,0,ClientRect.right ,ClientRect.bottom ,
RGB(255,255,255)); ////////////////////////////////////////////////////////////
//在新创建的位图上开始绘制
////////////////////////////////////////////////
//绘制对话背景
////////////////////////////////////
//创建位图画刷
CBrush DlgBackBrush;
DlgBackBrush.CreatePatternBrush (&m_DlgBackBitmap); //绘制对话背景
BITMAP bm;
m_DlgBackBitmap.GetObject (sizeof(BITMAP),&bm); MemDC.FillRect (0,0,bm.bmWidth ,bm.bmHeight );
     
         //动态显示一些文本
         ......
         ...... ////////////////////////////////////////////////////////////
PaintDC.BitBlt (0,0,ClientRect.right ,ClientRect.bottom ,
&MemDC,0,0,SRCCOPY); MemDC.SelectObject (pOldBitmap);         CDialog::OnPaint();
}目的是在对话上显示一幅背景位图,和一些动态文本,运行后一切正常,但当我改变背景位图的显示位置时,比如:
MemDC.FillRect(10,10,bm.bmWidth+10 ,bm.bmHeight+10 )时,背景位图显示不正常,是和原因?