この MFC アプリでは、通常のクリーンな終了は CWinApp::ExitInstance() を呼び出し、次に CWinApp::~CWinApp を呼び出します。ただし、exit(1) が呼び出されると、CWinApp::~CWinApp のみが起動し、ExitInstance はスキップされます。exit(1) を MFC で使用すべきではないことはわかっていますが、何百もの場所でそれを使用するレガシー アプリがあり、それを PostMessage またはまったく異なるものに置き換えることには慎重です。
ここでの最善の解決策は何ですか?
- ExitInstance が実際に呼び出されるように、いくつかの魔法のウィンドウ処理を行います
- exit(1) を別のものに置き換えますが、そうしたくありません。
- 何らかの形で atexit を使用して ExitInstance を呼び出します
- まだ呼び出されていない場合は、CWinApp dtr に ExitInstance を呼び出してもらいます
- ExitInstance を空にして、dtr ですべてのクリーンアップを実行してみてください。多分無理?
- 他の?