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;
}
实在不行就用BC吧。