一个基于SDI的程序,通过Doc的OnFileDialog对话框打开一个文件,然后读写数据。
我现在向直接程序启动就自动打开指定的文件。找了下资料,说在
BOOL CXXXDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE; // TODO: add reinitialization code here
// (SDI documents will reuse this docume
         Init(); //在这添加初始化代码 return TRUE;
}
我的Init()函数如下
BOOL CXXXDoc::Init()
{
m_strFullPath.Format("C:\\test.txt");

ReadData(m_strFullPath);CGetXXXView * pview = (CGetXXXView *)(((CMainFrame*)AfxGetMainWnd())->GetActiveView()); //程序执行到此处无法获得指针


return TRUE; }
到了获取视图指针时,就获取不到,出现错误了。但是如果把Init()放在OnFileDialg中是完全正确的。能获取。 不知道什么原因,我是新手,是不是程序还没初始化好之前,不能在文档与视图之间调用指针啊。
2还有一个问题,如何在文档调用一个CXXDialog中定义的一个CTreeCtrl控件。。
对控件进行操作,谢谢。
最好两个问题都解决。
我在线等

解决方案 »

  1.   

    用doc 的Serialize解决
    微软早就给我们想好了,用 他的Serialize if (ar.IsStoring())
    {
    // 保存数据
    CString strWrite;
                      strWrite="让mfc解决存储问题";
    ar.WriteString(strWrite); }
    else
    {
    //读取文件数据
    CString strRead;
    ar.ReadString(strRead);

    }
      

  2.   

    m_pDoc= (CDoc *)(pApp->pDocTemplate->OpenDocumentFile("文件路径"));
      

  3.   

    建议看下深入浅出MFC第3章一般SDI的各个类对象的创建顺序如下:
    CXXXApp--->CMainFrame------>CXXXDoc------>CXXXView
      

  4.   

    是不是程序还没初始化好之前,不能在文档与视图之间调用指针啊。
    ----------------
    先只读取数据,然后在View的OnInitialUpdate中才显示数据。2还有一个问题,如何在文档调用一个CXXDialog中定义的一个CTreeCtrl控件。。
    ----------------
    应放在CMainFrame或View里来做,做完的结果可放在Doc类里。
      

  5.   

    在Doc类一般只应作一些非可视的工作,因此不是Doc类调用谁的问题,而是“一个CXXDialog中定义的一个CTreeCtrl控件”的返回值往哪儿存放的问题。