プログラムを起動すると、ダイアログとすべてが表示されます。しかし、それは約10秒後に自動的に閉じます。どうすればそれを無効にできますか?
編集:これは、「デバッグ->デバッグなしで開始」を実行すると発生します。これは私がプログラムを実行する方法を知っている唯一の方法です。
EDIT2:私のダイアログはから継承してCDialogEx
います。
プログラムを起動すると、ダイアログとすべてが表示されます。しかし、それは約10秒後に自動的に閉じます。どうすればそれを無効にできますか?
編集:これは、「デバッグ->デバッグなしで開始」を実行すると発生します。これは私がプログラムを実行する方法を知っている唯一の方法です。
EDIT2:私のダイアログはから継承してCDialogEx
います。
ダイアログがモーダルでない場合、つまりDoModal()メンバー関数を使用してダイアログを起動していない場合は、コンストラクターで作成され、スコープ外になるとデストラクタで削除される可能性があります。このタイプの動作は、スプラッシュ画面のいくつかの実装で見られます。何が起こっているのかを理解するには、ダイアログデストラクタにブレークポイントを設定し、それにつながるコールスタックを確認します。また、アプリを終了させるキャッチされていない例外に見舞われる可能性があるため、デバッガーですべての例外をオンにすることも価値があります。
他の人がすでに言っているように、これはMFCアプリの通常の動作ではありません。
通常、ダイアログはそのように動作しません。
ただし、デフォルトでは、「Enter KeyPressed」であるOnOk(CDialog :: OnOk)と「EscKeyPressed」であるOnCancel(CDialog :: OnCancel())で閉じます。
ダイアログでこれら2つをオーバーロードして、それらが呼び出されるかどうかを確認し、そこでの動作を好きなように処理してみてください。
おそらく、Closeイベントも処理または監視する必要があります。
ダイアログ(特にOnOk、OnCancel、Close)で実行できることの例がたくさんありますCDialogの例
VisualStudio2013でも同じ問題に直面していました。
Visual Studioウィザード(ダイアログベース、シングル/マルチドキュメントベース)を使用して最も基本的なMFCアプリケーションを作成し、生成されたコードを再コンパイルしていました。コードはまったく変更されていません。
アンチウイルスをオフにすると、「再起動」が発生しないことがわかりました。:-)これはVisualStudioのバグではなく、環境の問題です。
私のアンチウイルスはAvast
です。
の解決策Avast
は、ディープスクリーン機能をオフにすることです。
そこで、[設定]/[アクティブ保護]/[ディープスクリーン]に移動し、それを無効にします。
このディスカッションから、アバストのフォーラムでソリューションへのこのアプローチに関する詳細を見つけることができます: https ://forum.avast.com/index.php?topic=139935.0
確認済みですが、これはVisual Studio 2010で発生し、Visual Studio 2008では発生しません。つまり、すべての反対票は完全に不要でした。これはVisualStudio2010のデフォルトであり、何も変更していません。何も変更せずに新しいアプリケーションを作成したと明示的に言ったので、バグも作成しませんでした。
すべての反対票をありがとう。
念のため、Visual Studio 2010を使用してこれを試しました。Dialogベースのアプリケーションを選択し、他のすべてのオプションをデフォルト設定のままにしました。x86およびx64のデバッグ構成とリリース構成の両方をコンパイルしました。デバッグなしで開始を使用して起動した場合、4つの実行可能ファイルのいずれもそれ自体で終了しませんでした。
これが発生している場合は、予想される動作を妨げるアプリケーションが(バックグラウンドで)実行されていると思います。仮想マシンをセットアップし、クリーンなVisual Studioをインストールして、同じ手順を再度実行してみてください。