CDC mem;
mem.CreateCompatiableDC(pDC);一切向mem上画,等画完了再bitblt到pdc

解决方案 »

  1.   

    void CMyButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
    {
    // TODO: Add your code to draw the specified item
    CDC *pDC;
    RECT rect;
    CDC dcMem;

    int nHeight;
    int nWidth; UINT uStyle; rect = lpDrawItemStruct->rcItem ;
    pDC = CDC::FromHandle (lpDrawItemStruct->hDC );
    dcMem.CreateCompatibleDC (pDC); nHeight = rect.bottom - rect.top ;
    nWidth = rect.right - rect.left ; uStyle = DFCS_BUTTONPUSH | DFCS_PUSHED; //::DrawFrameControl (lpDrawItemStruct->hDC, &lpDrawItemStruct->rcItem, DFC_BUTTON, uStyle);
    ::DrawFrameControl (dcMem.m_hDC , &lpDrawItemStruct->rcItem, DFC_BUTTON, uStyle); // Resize rect
    rect.left += frame_width;
    rect.top += frame_width;
    rect.right -= frame_width;
    rect.bottom -= frame_width; CBrush brush(bkColor);
    //pDC->FillRect (&rect, &brush);
    dcMem.FillRect (&rect,&brush); pDC->BitBlt (lpDrawItemStruct->rcItem .left ,lpDrawItemStruct->rcItem .top ,
             lpDrawItemStruct->rcItem .right - lpDrawItemStruct->rcItem .left ,
     lpDrawItemStruct->rcItem .bottom - lpDrawItemStruct->rcItem .top ,
     &dcMem, lpDrawItemStruct->rcItem .left ,lpDrawItemStruct->rcItem .top ,
     SRCCOPY); if ( type ) // Draw Left
    {
    draw1(pDC, rect);
    }
    else // Draw Right
    {
    draw2(pDC, rect);
    }

    }bitblt以后没有效果啊!
      

  2.   

    CWnd::SetRedraw is the only function to meet you.
      

  3.   

    CWnd::OnEraseBkgnd  
    afx_msg BOOL OnEraseBkgnd( CDC* pDC );重载这个函数,然后 返回FALSE,就是说永远也不重画背景,或者加上适当的控制,尽量不重画背景
      

  4.   

    那位大虾有空帮我看看程序,留下EMail,我发给他,