请教一个问题,关于GDI画图闪动的

用GDI在窗口画图的时候,当窗口收到画图消息,总是先画背景再画贴图,
所以画出来的东西只要你拖动窗口改变它的尺寸他就要闪烁,可是像什
么视频播放器之类的东西,放视频的时候,你改变他的窗口大小,他却从来
不闪,那么这个视频播放器画图是用什么东西画的,难道是直接操作硬件
驱动?

双缓冲我会,比你这代码简单,5行代码就搞定,我是说那个主窗口每次绘制的时候都要先画背景,然后再画我贴的图中间就会闪一下,不过我已经解决了
就是挡住WM_ERASEBKGND这个消息;
case WM_ERASEBKGND:
return 0;这样就不会画背景了

弄个双缓冲就可以了,百度百度

 void CTestDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // 用于绘制的设备上下文

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

        // 使图标在工作区矩形中居中
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;

        // 绘制图标
        dc.DrawIcon(x, y, m_hIcon);

    }
    else
    {
    //-------------------------------------------------------------------------
        rsDrawPileBox();

    //-------------------------------------------------------------------------

        CDialogEx::OnPaint();
    }

}
 void CTestDlg::rsDrawPileBox()
{   //双缓冲
    CPaintDC dc(this);
    CRect rectClient;
    GetClientRect(&rectClient);
    CDC dcMem;
    CBitmap bmpMem;

    dcMem.CreateCompatibleDC(&dc);
    bmpMem.CreateCompatibleBitmap(&dc, rectClient.Width(), rectClient.Height());
    dcMem.SelectObject(&bmpMem);
//---------------------------------------------------------       
//你的的绘图放这里,使用dcMem
//dcMem.Rectangle( int(x), int(y), int(x+dx), int(y+dy) );

//--------------------------------------------
    dc.BitBlt(0, 0, rectClient.Width(), rectClient.Height(), &dcMem, 0, 0, SRCCOPY);
    bmpMem.DeleteObject();
    dcMem.DeleteDC(); 
}