热情软件屋

 

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)就可以了。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio