1

OpenCascade の MFC の例を変更して、いくつかの機能を追加しました (これは HLR の例でした)。アプリケーションはドキュメント/ビュー アーキテクチャを使用し、ドキュメント クラスがほとんどの作業を行います。

新しい関数の中には GUI を必要としないものもあるため、GUI が開かれる前にプログラムが終了します。GUI はexit(0)、CDocument の特殊化から呼び出して実行します。

私の問題は、私たちのワークフローでは、MFC アプリケーションが Windows コマンド ラインから呼び出されることです。呼び出されるとすぐに制御をシェルに戻し、GUI を開くかどうかに関係なく、バックグラウンドで楽しく作業を続けます。アプリケーションで行う必要があるのは、GUI が開いているかどうかに関係なく、コマンド ラインからブロックすることです。

私は CWinApp と CMDIFrameWnd について調べてきましたが、コマンド ラインからアプリケーション ブロックを作成できる場合、その方法がわかりません。

4

3 に答える 3

1

リンカー オプション /SUBSYSTEM:CONSOLE を使用して実行可能ファイルをコンソール アプリケーションに設定すると、コマンド ラインはアプリケーションが終了するまでブロックされます。コンソール アプリケーションは Windows GUI を持つことができることに注意してください。

リンカー設定 /SUBSYSTEM:CONSOLE を設定すると、リンカー設定としてこれを行う場合、エントリ ポイントを winmain ではなく main() に調整する必要がある場合、1 つの問題があります。次のスレッドには、そのためのいくつかの回避策があります (エントリ ポイントについて言及した Ulrich Eckhardt に感謝します): Visual Studio 2012 C++ 標準出力

このアプローチには 2 つ目の欠点もあります。プログラムがコンソール ウィンドウから実行されていない場合、アプリケーションによってコンソール ウィンドウが作成されます。これは、ユーザーを混乱させる可能性があります。

于 2013-06-20T17:35:11.910 に答える