MSDN,对WM_CLOSE的解释中有这样一说
WM_CLOSE在默认情况下是调用WM_DESTROY。
但如何在任何情况下都调用WM_DESTROY呢?

解决方案 »

  1.   

    好像一个程序关闭,都会调用wm_destroy的啊
      

  2.   

    在wm_close的处理函数中直接调用DestroyWindow()函数。
      

  3.   

    好像是WM_CLOSE一定调用WM_DESTROY吧然后调用WM_QUIT
      

  4.   

    好象跟你们说的有点出入哦,
    MSDN,中是这样说的:
    by default,调用DestroyWindow。
    直接用DestroyWindow()来关闭好象有问题,很久以前用过,但有一次在某一台系统是98的机上有问题。我记得MSDN对wm_destroy消息的解释时,系统不能控制当时出现异常的情况,也就是未定义的。
      

  5.   

    对了,这是在多线程中使用 的。
    在后来创建的线程中创建了主窗口。
    而后在该窗口中调用了WM_CLOSE
    但WM_CLOSE消息一会调用WM_DESTROY消息,一会又不调用WM_DESTROY消息。
      

  6.   

    DestroyWindow()只是销毁窗口,WM_DESTROY会终止整个消息循环,两个不一样。
    所说的默认,我想可能就是如果不人工干预的话,他就这么做了
      

  7.   

    一群白痴,乱讲话WM_CLOSE 消息处理中,请示用户关闭应用程序,
    如果不关闭,则可以不做任何处理;
    如果要关闭,则需要调用 DestroyWindow调用DestroyWindow,则会发出另外一个消息 WM_DESTROYWM_DESTROY 消息处理中,则调用PostQuitMessage(0)
    调用PostQuitMessage(0),则会又发出另外一个消息WM_QUIT由WM_QUIT消息来结束消息循环,才能真下退出应用程序。 
     
      

  8.   

    楼上的消息调用分析的很对,WM_CLOSE只是让程序处于关闭的有信号状态。
    这些调用过程在MSDN上都有,
    但现在问题的关键是:
    在WM_CLOSE 消息请示用户关闭应用程序时,保证是需要关闭,及如何使它一定调用DestroyWindow,而不会出现不做任何处理的现象。
    MSDN,只说default情况下是调用DestroyWindow,但没有说明什么情况是default,什么情况又不是。
      

  9.   

    我给你讲的很明白。你最好学习一下SDK编程,不要钻死胡同。
      

  10.   

    要不强行的来一个SendMessage(WM_DESTROY)