请教一个关于画图程序的问题VC++6.0,SDI我想在CView中画图。
过程如下:初始化BOOL A为false.先是单击按钮,A为TRUE,同时对应的函数获得数据,然后是Invalidate,调用Ondraw函数,里面有一个判断,A若为真,执行一个函数F,画出一个折线图形。现在的问题是:数据已经有了。也能实现画的过程。但是有一个毛病,就是每次图形出现之前,都需要手工刷新一次,所谓手工刷新,就是说要切换到别的窗口,然后再切回来才能看到自己要画的那个图形。我尝试过Invalidate,UpdateAllViews(NULL),效果都是一样的。另外,还有一个现象,就是我曾经在Ondraw里面设置AfxMessageBox,发现只有在手工刷新之后,才执行了Ondraw函数。我就不清楚是那里出了问题,在Invalidate之后,没有调用Ondraw函数。那位大侠碰到过类似的问题,能指点一二啊谢谢。
过程如下:初始化BOOL A为false.先是单击按钮,A为TRUE,同时对应的函数获得数据,然后是Invalidate,调用Ondraw函数,里面有一个判断,A若为真,执行一个函数F,画出一个折线图形。现在的问题是:数据已经有了。也能实现画的过程。但是有一个毛病,就是每次图形出现之前,都需要手工刷新一次,所谓手工刷新,就是说要切换到别的窗口,然后再切回来才能看到自己要画的那个图形。我尝试过Invalidate,UpdateAllViews(NULL),效果都是一样的。另外,还有一个现象,就是我曾经在Ondraw里面设置AfxMessageBox,发现只有在手工刷新之后,才执行了Ondraw函数。我就不清楚是那里出了问题,在Invalidate之后,没有调用Ondraw函数。那位大侠碰到过类似的问题,能指点一二啊谢谢。
“触发单击按钮”的函数不是写在View中,而是别的类中,就不能直接写Invalidate(),而是应该CLXframe *pWnd=(CLXframe *)AfxGetMainWnd();
CLXView *pView=(CLXView *)pWnd->GetActiveView();
pView->Invalidate();
这样才可以让View类中的Ondarw()实现重化操作。
你自己在试试,以上的解决方法我已经是实现的了。