sdk用双缓冲只能显示部分位图


int num=0,m=0;
int width,hight,w,h,w1,h1,firewidth,firehight,firew,fireh;
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
    HBITMAP hbitmap,hBkBmp;
    BITMAP bitmap;
    HDC hmenDC,hdc;
    RECT rect;
    HBRUSH hBrush;

    GetClientRect(hWnd,&rect);

    switch(message)
    {
    case WM_PAINT:
        hdc=GetDC(hWnd);
        if (!m)
        {
            Initialize(hbitmap,bitmap);
            DeleteObject(hbitmap);
        }

        hmenDC = CreateCompatibleDC(hdc);
        hbitmap = CreateCompatibleBitmap(hdc, rect.right, rect.bottom);
        SelectObject(hmenDC, hbitmap);
        hBkBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_PEOPLE));
        hBrush = CreatePatternBrush(hBkBmp);
        FillRect(hmenDC, &rect, hBrush);
        DeleteObject(hBrush);
        SelectObject(hmenDC,hbitmap);
        TransparentBlt(hdc,rect.right/2-width/2,504-hight,width,hight,
            hmenDC,(1)*width,0,width,hight,RGB(255,255,0));

        DeleteObject(hbitmap);
        DeleteObject(hmenDC);
        DeleteObject(hBkBmp);
        ReleaseDC(hWnd,hdc);
        num++;
        if (num>=8)
        {
            num=0;
        }
        Sleep(500);
        InvalidateRect(hWnd,NULL,TRUE);
        break;
    case WM_SIZE:
        InvalidateRect(hWnd,NULL,TRUE);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd,message,wParam,lParam);
        break;
    }
    return 0;
}

void Initialize(HBITMAP hbitmap,BITMAP bitmap)
{
    hbitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_PEOPLE));
    GetObject(hbitmap,sizeof(BITMAP),&bitmap);
    w=bitmap.bmWidth;
    h=bitmap.bmHeight;
    width=w/8;
    hight=h;
    hbitmap=LoadBitmap(hInst,MAKEINTRESOURCE(IDB_FIREWORK));
    GetObject(hbitmap,sizeof(BITMAP),&bitmap);
    firew=bitmap.bmWidth;
    fireh=bitmap.bmHeight;
    firewidth=firew/5;
    firehight=fireh;
    m++;
}
![图片说明](https://img-ask.csdn.net/upload/201505/19/1432048653_550138.jpg)

想把这8个人依次显示出来,可是只能显示前两个人头,这是为什么

已经被选入 DC 的 GDI 对象,如:hbitmap,直接 Delete 是不行的。虽然调用 Delete 显示成功了!
你需要先将其选出 DC,即将以前的对象选入 DC 后,才能成功删除它。

很奇怪的代码,为什么不一次性在paint消息里面都绘制出来,而是一次绘制一个?