使用exit(1)时不调用ExitInstance

时间:2013-05-23 23:58:02

标签: windows mfc

使用我们的MFC应用程序,正常的干净退出调用CWinApp :: ExitInstance(),然后调用CWinApp :: ~CWinApp。但是如果调用exit(1),则仅触发CWinApp :: ~CWinApp,跳过ExitInstance。我知道exit(1)不应该与MFC一起使用,但是我们有一个遗留应用程序在100个地方使用它,我担心用PostMessage替换它或者完全不同的东西。

这里最好的解决方案是什么?

  1. 做一些神奇的窗口事情,所以实际上调用了ExitInstance
  2. 使用其他内容替换退出(1),即使我们不想
  3. 以某种方式使用atexit来调用ExitInstance
  4. 让我们的CWinApp dtr调用ExitInstance,如果尚未调用它
  5. 尝试清空ExitInstance并在dtr中进行所有清理。可能不可能?
  6. 其他?

1 个答案:

答案 0 :(得分:2)

这取决于您在ExitInstance中所做的工作。你必须确保你理解它正在做什么,以及改变上下文将如何影响它。

有了这个警告,最明显的方法是将您在ExitInstance中所做的工作转移到单独的程序MyExitInstance。从MyExitInstance致电ExitInstance。将对exit的调用替换为调用MyExitInstance的过程,然后调用exit

请注意,我在此假设只有ExitInstance中您自己的代码才重要,而不是框架可能为您做的任何事情。