2

我使用 Visual Studio 的应用程序向导创建了一个具有多文档界面的骨架 MFC 程序。当我启动这个程序时,它会自动创建一个子框架,我不希望它这样做——我需要主框架的客户区为空,直到用户选择打开一个文件。

调试器告诉我,当应用程序类的 InitInstance() 函数调用 ProcessShellCommand() 时会创建一个 CChildFrame 对象,但是什么是我重写此行为的好入口点?

4

4 回答 4

5

这有效,它保持从外壳等打印/打开。

// 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;
于 2008-10-10T05:56:27.730 回答
4

这对我有用——改变

if (!ProcessShellCommand(cmdInfo))

if (cmdInfo.m_nShellCommand != CCommandLineInfo::FileNew && !ProcessShellCommand(cmdInfo))

在您应用的 InitInstance() 函数中。

于 2008-10-09T15:55:14.607 回答
1

在 InitInstance() 中跳过 ProcessShellCommand() 调用(在 FileNew 的情况下)确实是要走的路。

于 2008-10-09T18:30:20.893 回答
1

做一件事。。

在您的 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; 

*/

像这样....

于 2010-02-12T11:19:47.830 回答