UINT ThreadFunc(LPVOID lpParam)
{
  CRect rc;
  ((CRoadMapWnd*)lpParam)->GetClientRect(&rc);
  static int i = 0;
  while(1)
  {
  CDC g_workBuffer;
  CDC*pDC =((CRoadMapWnd*)lpParam)->GetDC();
  g_workBuffer.CreateCompatibleDC(NULL);
  CBitmap * pOldBmp;
  CBitmap * pBmp;
  pBmp=new CBitmap;
  pBmp->CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());
  pOldBmp=(CBitmap *)g_workBuffer.SelectObject(pBmp);
  CBrush br;
  br.CreateSolidBrush(RGB(255,255,255));
  g_workBuffer.SelectObject(br);
  g_workBuffer.FillSolidRect(&rc,RGB(255,255,255));
  br.DeleteObject();   g_workBuffer.FillSolidRect(i,100,100,100,RGB(255,0,0)); g_backBuffer.BitBlt(0,0,rc.Width(),rc.Height(),&g_workBuffer,0,0,SRCCOPY);
    
g_workBuffer.SelectObject(pOldBmp);
pBmp->DeleteObject();
g_workBuffer.DeleteDC();
delete pBmp; ((CRoadMapWnd*)lpParam)->Invalidate();
i++;
if(i>rc.Width())
i=0;
Sleep(1000/36);
  }
return 0;
}