Как я могу остановить приложение MFC от вызова OnFileNew () при запуске? - PullRequest
2 голосов
/ 09 октября 2008

Я использовал мастер приложений Visual Studio для создания скелетной программы MFC с многодокументным интерфейсом. Когда я запускаю эту программу, она автоматически создает дочерний фрейм, чего я не хочу - мне нужно, чтобы клиентская область основного фрейма была пустой, пока пользователь не решит открыть файл.

Отладчик сообщает мне, что объект CChildFrame создается, когда функция InitInstance () класса приложения вызывает ProcessShellCommand (), но что для меня является хорошей точкой входа для отмены этого поведения?

Ответы [ 4 ]

5 голосов
/ 10 октября 2008

Работает, поддерживает печать / открытие с оболочки и т. Д.

// 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;
4 голосов
/ 09 октября 2008

Это сработало для меня - изменить

if (!ProcessShellCommand(cmdInfo))

до

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

в функции InitInstance () вашего приложения.

1 голос
/ 12 февраля 2010

Сделай одну вещь ..

в вашем файле 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; 

* /

вот так ....

1 голос
/ 09 октября 2008

Пропуск вызова ProcessShellCommand () (в случае FileNew) в InitInstance () - действительно путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...