2

Visual Studio の Application Wizard を使用して、マルチドキュメント インターフェイスを備えたスケルトン 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 に答える