去掉MFC多文档程序中烦人的打开程序就创建新文档功能
当我们创建一个MFC的多文档程序后,什么都不用修改直接编译运行,就会看到程序自动创建了一个新文档出来。可能MFC设计的时候是考虑方便使用吧,不过有时候也很烦人。这里就分享下去掉这个烦人的创建新文档功能。
只需要在APP类的 InitInstance()类中加上下边的代码即可:
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
这行代码加完后InitInstance函数的部分代码片段如下:
BOOL CXXXApp::InitInstance()
{
……………………//此处省略无关代码
// 分析标准 shell 命令、DDE、打开文件操作的命令行
CCommandLineInfo cmdInfo;
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;//这是新加的代码,一定要加在这两行中间,不能加在ParseCommandLine调用之后。
ParseCommandLine(cmdInfo);
……………………//此处省略无关代码
return TRUE;
}
原因也很简单,CCommandLineInfo的构造函数处理造成的,一看就明白。构造函数如下:
CCommandLineInfo::CCommandLineInfo()
{
m_bShowSplash = TRUE;
m_bRunEmbedded = FALSE;
m_bRunAutomated = FALSE;
m_bRegisterPerUser = FALSE;
m_nShellCommand = FileNew;//赋值为创建新文档
}
ParseCommandLine函数在解析命令行参数的时候发现没有参数就不会修改原来的值,所以最后的结果就是每次打开程序都会执行FileNew对应的处理。