我使用 Visual Studio 的应用程序向导创建了一个具有多文档界面的骨架 MFC 程序。当我启动这个程序时,它会自动创建一个子框架,我不希望它这样做——我需要主框架的客户区为空,直到用户选择打开一个文件。
调试器告诉我,当应用程序类的 InitInstance() 函数调用 ProcessShellCommand() 时会创建一个 CChildFrame 对象,但是什么是我重写此行为的好入口点?
这有效,它保持从外壳等打印/打开。
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if ( cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew )
{
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing ;
}
// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;
这对我有用——改变
if (!ProcessShellCommand(cmdInfo))
到
if (cmdInfo.m_nShellCommand != CCommandLineInfo::FileNew && !ProcessShellCommand(cmdInfo))
在您应用的 InitInstance() 函数中。
在 InitInstance() 中跳过 ProcessShellCommand() 调用(在 FileNew 的情况下)确实是要走的路。
做一件事。。
在您的 XXXApp.cpp 文件中
在这种方法中:-
注释以下行.. /*
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line. Will return FALSE if
// app was launched with /RegServer, /Register, /Unregserver or /Unregister.
if (!ProcessShellCommand(cmdInfo))
return;
*/
像这样....