2.9--如何使应用程序保存上一次的活动文档,并自动的再次打开?

      解决这个问题需要两步处理。首先,当应用程序退出时,要保存这个活动文档的文件名;然后,当应用程序启动时,要重新打开存储在文件名中的文档。步骤如下:

 

第一步:

保存活动文档的文件名,最好的保存时刻是 主框架窗口要关闭的时候----也就是,当它接收WM_CLOSE消息时。因此,必须在主框架窗口的OnClose()函数内保存活动文档的文件名。

 

第二步:

应用程序启动时,打开在第一步中保存的文档。重新装载先前存储的文档的最佳位置是在应用程序的InitInstance()函数中,如下代码所示:

 


//2、保证文档具有一个名字
        if(!pDoc->SaveModified())
                return;
        pDoc->SetModifiedFlag(false);

如果没有给一个活动文档赋标题,会发生什么事情呢?例如:一个从未保存过的新文档。在这种情况下,程序清单中GetPathName调用将返回一个 空字符串,接着该字符串将被写进Register或INI文档中。接着执行CMDIFrameWnd::OnClose();将提示用户使用某个特定的名字来保存没有标题的文档。不幸的是,代码不能检索这个名字,并且在接下来的应用程序启动中不能打开任何文档。

上面的小代码块通过特意要求用户保存活动文档而解决了这个问题,如果用户选择Cancel,那么就直接返回而不关闭任何文档。否则,我们把文档标记为"未修改",这样就避免了在后面标准CMDIFrameWnd::OnClose();处理过程中再次弹出相同的消息。

在CMDIFrameWnd::OnClose();函数调用返回的时候,已经释放了所有的文档对象,所以不可能在CMDIFrameWnd::OnClose();调用后存储文档的名字。

 

当一个文档将要关闭并且已经被标识为“修改过”(调用它的SetModifiedFlag()函数实现)时,默认的MFC行为将显示一个消息框,询问用户是否要保存该文档。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值