使用我们的 MFC 应用程序,正常的干净退出调用 CWinApp::ExitInstance(),然后调用 CWinApp::~CWinApp。但是如果 exit(1) 被调用,只有 CWinApp::~CWinApp 触发,ExitInstance 被跳过。我知道 exit(1) 不应该与 MFC 一起使用,但我们有一个旧版应用程序在 100 多个地方使用它,我对用 PostMessage 或完全不同的东西替换它持谨慎态度。
这里最好的解决方案是什么?
- 做一些魔术窗口的事情,所以实际上调用了 ExitInstance
- 将 exit(1) 替换为其他内容,即使我们不想这样做
- 以某种方式使用 atexit 调用 ExitInstance
- 让我们的 CWinApp dtr 调用 ExitInstance,如果它还没有被调用的话
- 尝试清空 ExitInstance 并在 dtr 中进行所有清理。大概不可能吧?
- 其他?