一个基于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控件。。
对控件进行操作,谢谢。
最好两个问题都解决。
我在线等
我现在向直接程序启动就自动打开指定的文件。找了下资料,说在
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控件。。
对控件进行操作,谢谢。
最好两个问题都解决。
我在线等
微软早就给我们想好了,用 他的Serialize if (ar.IsStoring())
{
// 保存数据
CString strWrite;
strWrite="让mfc解决存储问题";
ar.WriteString(strWrite); }
else
{
//读取文件数据
CString strRead;
ar.ReadString(strRead);
}
CXXXApp--->CMainFrame------>CXXXDoc------>CXXXView
----------------
先只读取数据,然后在View的OnInitialUpdate中才显示数据。2还有一个问题,如何在文档调用一个CXXDialog中定义的一个CTreeCtrl控件。。
----------------
应放在CMainFrame或View里来做,做完的结果可放在Doc类里。