我在做一个基于对话框的程序,最小化还原之后一些区域的图片无法显示,请教如何编写OnPaint函数,希望能具体点,给个例子,谢谢

解决方案 »

  1.   

    你这应该是刷新问题,
    重载OnPain函数,想在里面画什么就画什么,要贴什么图也都可以的。
      

  2.   

    你是画在对话框本身上?应该不会的呀~ 是不是有其他控件遮挡?
    画在其他控件上?尝试一下,在你贴图前~先invilidate()和updateWindows()然后再贴,看看~
      

  3.   

    正确使用invilidate()和updateWindows()刷新画面。
      

  4.   

    updateWindows()是最重要的一个函数,好像还得用 updedata(TRUE)
      

  5.   

    如果你的所有画图代码都是在OnPaint中的话,是不会出现这种情况的.
      

  6.   

     if (nID == SC_RESTORE)
        {
    InvalidateRect();
        }
    CDialog::OnSysCommand(nID, lParam);
    在窗口恢复 重画一下
      

  7.   

    pDC->BitBlt();函数贴图!当然要先加载图片和获取图片的大小
      

  8.   

    可以重载WM_ERASEBKGND这个消息, 看看你还原以后, 有没有进入这个消息刷新, 如果有的话, 可以RedrawWindow一下, 如果没有的话, 可以查下, 是不是redraw设成false了
      

  9.   

    先响应对话框的WM_PAINT消息,然后在OnPaint()里画图,就不会最小化恢复后图消失了.void CAboutDlg::OnPaint() 
    {
    CPaintDC dc(this); // device context for painting

    // TODO: Add your message handler code here
    CRect rect;
    GetClientRect(&rect); dc.Ellipse(rect);
    // Do not call CDialog::OnPaint() for painting messages
    }