如何防止一个MDI应用程序在启动时打开一个新(空)文档?(新)
来源:互联网 发布:猫狗动画片知乎 编辑:程序博客网 时间:2024/06/02 10:33
关于这个问题,本人见过《MFC经典问答》上的第2.6节的说明:“如何防止一个MDI应用程序在启动时打开一个新(空)文档”?作者给出的方法是:
CCommandLineInfo cmdInfo;
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
ParseCommandLine(cmdInfo);
按照作者的解释,当该MDI应用程序与某一扩展名相关联时,比如:“txt”文本,当双击某文本文件时,该程序会自动打开该文件。作者的解释是这样的:“把默认行为从CCommandLineInfo::FileNew改变为CCommandLineInfo::FileNothing,它仍然允许进行普通的命令行分析”。
我做过测试,在vc6下并不能实现上述功能。跟踪了一个源代码,才发现作者的想法是好的,但在vc6下,MFC稍做了一些限制,具体源代码如下:
void CCommandLineInfo::ParseLast(BOOL bLast)
{
if (bLast)
{
if (m_nShellCommand == FileNew && !m_strFileName.IsEmpty())
m_nShellCommand = FileOpen;
m_bShowSplash = !m_bRunEmbedded && !m_bRunAutomated;
}
}
显然MFC强调当命令行的执行文件名不为空时,即可能是双击某一文件时,必须还要求当前的m_nShellCommand == FileNew ,这样的一个附加前提。因此我对上述问题的解决方案是这样的:
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if(cmdInfo.m_strFileName == "")
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
这样,就可以实现在单纯打开该MDI应用程序时,并不新建一个空文档;而在命令行的文件名不为空,或双击指定扩展名的文件打开MDI时又可以打开该指定文件。本代码在XP sp2 + vc6下运行通过。
转载请注明出处:vcfly.net
- 如何防止一个MDI应用程序在启动时打开一个新(空)文档?(新)
- 2.7--如何编程来创建一个新(空)文档?
- 使程序在启动时不创建一个新文档
- 程序在启动时不创建一个新文档
- C# 实现MDI子窗体只打开一个(打开新的窗口,关闭其他窗口)
- 如何禁用窗口关闭按钮在一个 MFC 多文档界面 (MDI) 应用程序
- 启动时不自动打开一个空文档
- 在mfc编程中,创建多文档应用程序时,如何关闭启动时自动打开的空文档
- 如何在一个事件中,打开一个新窗体【附打开一个既存窗体】
- 如何在无法获取确定的一个Activity对象时,来启动一个新的activity
- 如何使用在某个“文档模板”中确定的视图、框架窗口来打开一个新视图?
- 如何打开一个新的对话框
- MDI开启时禁止创建新文档
- 如何打开MDI文档!
- 不能启动EasyConfig时如何创建一个新的网络服务
- 如何打开一个应用程序
- 如何在WebBrowser打开的网页链接后直接在WebBrowser打开而不是新弹出一个IE窗口来打开
- PHP在后台启动Microsoft Word、打开一个新文件、键入一些文本、保存该文件然后关闭应用程序
- 用vb制作目录的问题
- 使用yum 代替up2date 自动更新升级RedHat AS3
- 【收藏】人生短篇
- oracle常用函数问答
- 黄霑今晨病逝
- 如何防止一个MDI应用程序在启动时打开一个新(空)文档?(新)
- 有幸见到许仰东许老师了!
- 我想要的生活
- Oracle临时表 使用补充
- (转)一种可以穿透还原卡和还原软件的代码
- 跟踪的诀窍
- 错就错在立志学黑客
- 用sysdeo的tomcatplugin整合最新版的eclipse 3.0和Tomcat5.0.27,构建jsp环境
- 发现一个专么收集Google图标的有趣站点