请大家讨论一下:
1,如何在MFC程序退出时返回一个指定的值?
2.PostQuitMessage(int code) 和exit(int code)各有什么好处?在控制台程序中直接用return 就可以为程序指定一个返回值,但为什么在MFC中用PostQuitMessage()
退出程序时,得到的返回值不正确,而用exit()就可以正常的得到指定的返回值.
PostQuitMessage(5)与exit(5)在退出MFC程序时有什么区别?

解决方案 »

  1.   

    exit(xxx)其实就相当于return xxx
    PostQuitMessage(xxx) 只是Post了一个WM_QUIT的消息,必须等到消息循环检测消息时才退出.如果在中间有 exit的存在就不一定会执行到...............
      

  2.   

    直接EXIT不好,可能会有一些退出时需要处理的事情来不及处理, 发退出消息就没这些毛病,会正常退出。退出前会处理一堆事情的,没有EXIT那么粗暴
      

  3.   

    你要函数的返回值有什么用啊?MFC内部封装了WinMain函数。
      

  4.   

    1、使用ExitProcess(UINT uExitCode);来返回指定值。
    2、exit最终也是调用ExitProcess,只不过在调用前,做了些清理的工作。
    PostQuitMessage用在有消息循环的程序中!
      

  5.   

    exit最好是不要用吧,前几天用好像内存泄露了…………
      

  6.   

    PostQuitMessage用于结束消息循环,与程序的返回值没有必然联系,完全依赖于消息循环的处理代码。MFC项目运行的大体流程是:CWinApp构造、InitInstance、Run、ExitInstance、CWinApp析构。其中Run函数的返回值就是程序的返回值,对于文档—视图架构,好象是把PostQuitMessage的参数作为Run的返回值,对于对话框架构,并没有调用Run函数,所以PostQuitMessage不会影响返回值。你可以在CWinApp类中定义一个变量用来储存返回值,在析构函数中以该变量为参数调用ExitProcess退出程序。
      

  7.   

    "PostQuitMessage用于结束消息循环,与程序的返回值没有必然联系",不是吧,我们的好多MFC程序都是用这个函数返回值的.对于测试程序来说,有必要知道程序的测试结果(Pass/Fail),并在退出程序时返回不同的值表示执行的结果.我在MFC程序中用exit(5)退出程序,然后用echo %errorlevel%查看程序的返回值,结果是正确的(即5),但是用PostQuitMessage(5)退出程序时得到的值却是2,而有同事也用过PostQuitMessage(),他们能得到正确的返回值,不知道为什么?
      

  8.   

    哎,帖子到期了,结了吧.
    6楼的说的好像有些道理,不过我也没找到怎么"CWinApp类中定义一个变量用来储存返回值",
    还是用exit()来返回吧.