WM_SIZE:Invalidate(hwnd,NULL,FALSE),为什么改变窗口大小时,窗口内容还会消失

解决方案 »

  1.   

    你没有将画的内容放在OnDraw(SDI,MDI)或OnPaint(对话框)下。
      

  2.   

    void CMyView::OnPaint() 
    {
    CPaintDC dc(this);
          OnPrepareDC(&dc);
         CRect rect32;
             dc.GetClipBox(&rect32);     
    CBitmap MemBitmap;

    MemBitmap.CreateCompatibleBitmap(m_memdc,rect32.right,rect32.bottom);
    CBitmap *pOldBitmap=m_memdc->SelectObject(&MemBitmap);
             m_memdc->PatBlt(rect32.left,rect32.top,
             rect32.Width(),rect32.Height(),PATCOPY);//
            OnDraw(m_memdc);//
            dc.BitBlt(rect32.left,rect32.top,rect32.Width(),rect32.Height(),
        m_memdc,rect32.left,rect32.top,SRCCOPY);// m_memdc->SelectObject(pOldBitmap);//恢复m_memdc的画笔
        return;
    }
      

  3.   

    The client area is ed for painting when the next WM_PAINT message occurs
      

  4.   

    我是用c + API ,不涉及MFC
    有什么解决方法
      

  5.   


    case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);
    // TODO: Add any drawing code here...
    RECT rt;
    GetClientRect(hWnd, &rt);
    DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
    EndPaint(hWnd, &ps);
    break;
      

  6.   

    大小改变当然要 重绘,你的 绘制代码实在 WM_PAINT中吗,如果在的 话是不可能消失的 。
    你检查一下,因该是如此
      

  7.   

    同意 SoLike(是我)