MASATOの開発日記 2000年7月


7/28

 このままでは7月分の記事が無くなってしまう!という事で簡単なトピックを載せておきます。これって手抜きですか?手抜きですね。すみませんっす。

(Visual C++)MDIアプリケーションの起動時に、新規ドキュメントを開かせない方法。

 MDIアプリケーションを起動した際、既にドキュメントが開かれています。SDIアプリケーションを考えると確かに新規に開かれていて良いのですが、これを止めたい!と思った時はどうすればよいのでしょうか?

 その前に、まずなぜ一つドキュメントが開かれているのかを考えてみましょう。といっても大した事ではありません。それは、あなたがアプリケーションを新規作成モードで起動しているからです。つまり、何もオプション(コマンドラインオプション)を付けないで起動しているからです。そのため、新規ドキュメントが開かれているわけです。では、新規作成じゃないモードではどうやって起動すればよいのでしょうか?何かオプションを付けるとそのようなモードになるのでしょうか?しかし、残念ながらそんなオプションは用意されていないようです。
 けれども、内部的にはこのモード(何もしないモード)が用意されています。そのため、新規作成モードならば、何もしないモードで開く、としてしまえば、無事にドキュメントを開かせずに起動します。手法は以下の通り。

  1. CxxxApp::InitInstanceに、

  2. -----
    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);
    -----
    と書かれた行があるはずです。これを探しましょう。これが、コマンドラインを解析している部分のようです。
     
  3. この行の次に以下のコードを挿入します。

  4. -----
    if (cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew){
        cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
    }
    -----
    これだけで完了です。


やりかたが分かってしまえば簡単だと思います。ここでcmdInfo.m_nShellCommandをいじくるのは、色々な効果があるようで奥が深そうです。



戻る
トップページへ
masato@mb.kcom.ne.jp