位图旋转后的刷新有关问题

位图旋转后的刷新问题
问题:
        载入位图实现旋转后如何做到旋转时新位图显示而原位图消失?以下代码实现位图旋转后需手动刷新方能显示旋转后的图片。请问该如何改进?
Wnd.cpp:
CMFCWnd::CMFCWnd()
{
m_flag   =   0;
CString   strMyClass=AfxRegisterWndClass(0,0,HBRUSH(COLOR_WINDOWFRAME),::LoadIcon(NULL,IDI_APPLICATION));

CreateEx(WS_EX_ACCEPTFILES   ,strMyClass,_T( "Window "),WS_SYSMENU|WS_THICKFRAME,CRect(0,0,1000,1000),NULL,0);
ShowWindow(SW_SHOW);
for(int   i   =   0;   i   <   4;   i++)
{
      for(   int   j   =   0;   j   <   4;   j++)
      {
m_pChildWnd[i][j]   =   new   CWnd();
m_pChildWnd[i][j]-> CreateEx(WS_EX_ACCEPTFILES   ,strMyClass,_T( "Window "),   WS_OVERLAPPED   |   WS_CHILD   |WS_DLGFRAME,CRect(15+15*j,15+15*i,30+15*j,30+15*i),this,0);
      }
}
ShowBlock();
CreateBtn();

}

CMFCWnd::~CMFCWnd()
{
//DestroyWindow();
}

BEGIN_MESSAGE_MAP(CMFCWnd,   CWnd)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_CBtn,Try_to_open)
ON_BN_CLICKED(IDC_CBtn_turn,Try_to_turn)


END_MESSAGE_MAP()


void   CMFCWnd::OnPaint()
{
CDC   MemDC;
CClientDC   ClientDC(this);  
MemDC.CreateCompatibleDC(&ClientDC);
if(m_cs_path.GetLength()   !=   0)
{
m_Bitmap.m_hObject   =   ::LoadImage(AfxGetInstanceHandle(),m_cs_path,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
MemDC.SelectObject(m_Bitmap.m_hObject);
::GetObject(m_Bitmap.m_hObject,sizeof(m_BM),&m_BM);
//ClientDC.BitBlt(100,0,m_BM.bmWidth,m_BM.bmHeight,&MemDC,0,0,SRCCOPY);
/* m_hBitmap   =   (HBITMAP*)::LoadImage(AfxGetInstanceHandle(),m_cs_path,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
* HGDIOBJ   hOld   =   MemDC.SelectObject(m_hBitmap);
* ::GetObject(m_hBitmap,sizeof(m_BM),&m_BM);
* ClientDC.BitBlt(100,0,m_BM.bmWidth,m_BM.bmHeight,&MemDC,0,0,SRCCOPY);
* MemDC.SelectObject(hOld);
*/

ClientDC.PlgBlt(p,&MemDC,0,0,m_BM.bmWidth,m_BM.bmHeight,m_Bitmap1,0,0);

}  

MemDC.DeleteDC();
m_Bitmap.DeleteObject();




CWnd::OnPaint();

}

int   CMFCWnd::ShowBlock()
{
for(int   i   =   0;   i   <   4;   i++)
{
      for(   int   j   =   0;   j   <   4;   j++)
      m_pChildWnd[i][j]-> ShowWindow(SW_HIDE);
}  
for(int   i   =   0;   i   <   4;   i++)
{
      for(   int   j   =   0;   j   <   4;   j++)
      {
//     if(block[i][j]   ==   1)
      {
m_pChildWnd[i][j]-> ShowWindow(   SW_SHOW);
m_pChildWnd[i][j]-> UpdateWindow();
      }
      }
}
return   0;
}

int   CMFCWnd::CreateBtn()
{
m_pBtn   =   new   CButton();
BOOL   bsuccess   =   m_pBtn-> Create(_T( "OPEN "),   WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(100,800,150,825),   this,   IDC_CBtn);
m_pBtn_turn   =   new   CButton();
m_pBtn_turn-> Create(_T( "TURN "),   WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(200,800,250,825),   this,   102);