CWinApp::OnFileOpen函数按照先后次序具体执行了哪些行为
编号:QA003821
建立日期: 2001年1月31日 最后修改日期:2001年1月31日
所属类别:
平:
操作系统: Windows 98
编程工具: Visual C++ 6.0
问题: 用MFC AppWizard *.exe生成的多文档视图结构的程序中,当点击File菜单中的Open项时,程序将要调用应用程序类的CWinApp::OnFileOpen函数,请问该函数按照先后次序具体执行了哪些行为?这与当点击New项调用CWinApp::OnFileNew函数所执行的功能中哪些相同,哪些不同?能不能给出实现函数OnFileOpen功能的具体代码?谢谢回答!
水平: 刚入门
回答:
CWinApp::OnFileOpen函数大概执行以下步骤:
1、提示用户选择文件;
2、选择一个匹配的文件模板;
3、创建文档、框架和视类;
4、打开文件;
5、将该文件和档案(CArchive)联系起来;
6、调用Serialize。
而OnFileNew不执行1、2、4、5几步,其他相同。具体的代码可以参考MFC\Src目录中的源程序。
如果你想实现OnFileOpen是为了读你自己定义的文件,一般不重载OnFileOpen,而是在Doc类的Serialize中写代码。如果不习惯CArchive类,也可以直接重载OnOpenDocument(它是Serialize的父函数)。这方面的例子可以参考VC++的diblook。
如果你只是想显示一个与众不同的选择文件的对话框,一般需要重载OnFileOpen。大致的步骤是:
void CYourApp::OnFileOpen()
CString newName;
if(!ShowYourDialog(newName))
return; // 显示你的对话框
OpenDocumentFile(newName);
}
你只需要实现ShowYourDialog(newName)就可以了。
此问题由李海回答。
| |
|
|
| |
|
|