MFC对于OnDraw()函数调用顺序的问题
我写了一个MFC的单文档框架的程序,要用框架打开DXF文件读取,读取后在单文档中进行显示。
我用一个模板类(template template< class BASE_CLASS, class TYPE >来存储了我读取的信息,然后想分块读出我的信息,在面板上绘图出来。
我自认为框架的运行循序应该是 :
(1)自动运行,显示出界面;
(2)在界面上打开文件,调用CXXXDoc类的OnOpenDocument()函数,打开文件;(3)读取文件信息,对信息分类保存到模板类;
(4)从模板类读出信息,显示,这时候应为窗口发生重绘,会再次调用OnDraw()函数;
(5)后面怎么做我也还没搞明白。
我现在有几个方面的不解,忘各位高手能帮小弟解答下:
一、 我在CXXXView类里面写了一个DrawAll()函数,用这个函数来绘制图形,然后再OnDraw()里面被调用,从而达到图形显示的目的。我在OnOpenDocument()和OnDraw()的函数开始处设置断点,调试运行,我的框架没显示就直接跳OnDraw(),因为DrawAll()里面对有对模板类链表的操作,而第一次进入OnDraw(),进入DrawAll(),里面链表没有数据,程序就直接结束了。我应该怎么操作才能先进入框架执行打开后又进入OnDraw()然后可以DrawAll().
二、 我用VC6.0写的程序,执行strcpy()时候调试单步会进入到汇编,why?
CXXXXView类要实例化了才能用它的指针,我在类里面没有实例化就用了它的指针,我是这样写的:
//全局的视图类指针
CDXFCtrlView *p_View;
void DPtoVP(double x, double y, int *X, int *Y)
{
p_View->DPtoVP(x,y,X,Y); //调用视图类的DPtoVP函数
}
*p_View指针为实例化对象,当我用这个DPtoVP的时候就会出现异常,然后函数里面的数据明明初始化了的显示为初始化的数据,整个程序的异常是不是又可能出现在这里?