第一次用vc写程序,有一个问题困扰我很久了,向大家请教下我做了一个对话框程序,在对话框上放置了一个picture控件
想在picture控件上画图,画图动作由一个timer事件触发画图的之前,先清除上次画的图
CWnd* pWnd = GetDlgItem("IDC_STATIC_IMG");
CDC* pDC = pWnd->GetDC();
pWnd->Invalidate();然后重新画图
Redraw();发现pWnd->Invalidate()这句没有效果,先前画的图并未被清除
查看picture控件已经设置为Notify
试着用InvalidateRect()、UpdateWnd()都不行实在弄不明白,貌似是控件根本就不接受消息,但是notify已经设置了啊
对了,我用的是vs2008谢谢大家

解决方案 »

  1.   

    从CStatic派生个类,然后在OnPaint中绘图。
      

  2.   

    不知道你的显示是在Dialog的OnPaint里面还是Picture对应的控件如CStatic中画的,如果是在CDialog中的OnPaint中画的,那应该刷新Dialog对应的Picture的位置。
      

  3.   

    是在CStatic中画的
    我现在不明白的是,为什么获取picture控件的窗口指针后
    调用Invalidate会没有效果
      

  4.   

    从CStatic派生个类,然后在OnPaint中绘图。
      

  5.   

    你必须把picture控件上的图片删除掉再Invalidate()才有用,否则还是原来画的,还有个方法就是在Redraw(); 前给picture控件画一个白色背景把以前的抹掉.
      

  6.   

    为什么这个帖还没有结,但却归到已经解决的问题里面了?CSDN出问题了?