请教一个双缓冲和gdiplus的有关问题

请问一个双缓冲和gdiplus的问题
C/C++ code
                       CBitmap m_bitmap;
            CDC memdc;
            m_bitmap.CreateBitmap(pImage->w, pImage->h, 1, 32, pImage->samples);
            BITMAP bm ;
            m_bitmap.GetBitmap(&bm);
            memdc.CreateCompatibleDC(pDC);
            CBitmap * pOld = memdc.SelectObject(&m_bitmap);
            HDC dc = memdc.GetSafeHdc();

                        //因为需要显示透明位图,我这里使用gdi+ 在memdc绘制
            Graphics grapic(dc);
            Image image(L"c:\\2.png",FALSE);
            grapic.DrawImage(&image, 0, 0, 612, 792);
            pDC->StretchBlt(0,0,pImage->w,pImage->h,&memdc,0,0, bm.bmWidth, bm.bmHeight,SRCCOPY);
            memdc.SelectObject(pOld);
            memdc.DeleteDC();
            m_bitmap.DeleteObject();
            ReleaseDC(pDC);


我用显示一块位图,然后在位图上面显示透明png,我使用双缓冲把位图放在到memdc上,然后在memdc上用gdiplus 绘制一个png图片(透明),怎么最后闪烁比较高,尤其是拖动滚动条的时候,应该怎么做才是正确的方式呀?

------解决方案--------------------
WM_ERASEBKGND 直接返回TRUE
------解决方案--------------------
探讨
引用:

WM_ERASEBKGND 直接返回TRUE

我需要背景色是灰色,不可以直接返回true呀!

------解决方案--------------------
可以在贴图之前填充背景色


------解决方案--------------------
探讨
引用:

引用:
引用:

WM_ERASEBKGND 直接返回TRUE

我需要背景色是灰色,不可以直接返回true呀!


灰色背景画入memdc中即可

我试了一下是确实是没有闪烁的,但是有一个问题,如果我有滚动条的话,我把程序最小化,视图下面就没有显示了!