请问,发送WM_Close 和直接执行 CDialog::OnClose,有什么不一样一个窗体,我点又上角的叉子,就能关闭,我点自定义的按钮,就关闭不了。我自定义的按钮就是执行 ::OnClose为什么呢

解决方案 »

  1.   

    一般OnClose只是为程序员开发用于关闭前及时添加必要操作的接口(比如提示保存数据)
    而OnClose并不是程序关闭的全部执行函数,OnClose只是关闭过程执行函数链条中的一个函数。
    一般点击关闭按钮,对应应该是WM_QUTI消息,执行函数MFC程序应该是WinApp::ExitInstance
      

  2.   

    OnClose发送WM_DESTORY消息,然后后者处理后发送WM_CLOSE
      

  3.   

    OnClose 就是处理WM_CLOSE消息的函数吧....
      

  4.   

    OnClose是处理WM_CLOSE消息的,不是发送WM_CLOSE消息的,直接调用OnClose并不能关闭窗口。
      

  5.   

    菜单或点击 X 时-->WM_CLOSE( 系统发出 ) -->DefWindowProc() ( 处理 WM_CLOSE )    -->DestroyWindow() ( 被DefWindowProc()调用,销毁窗口,但程序没结束 )--->WM_DESTROY    ( 由DestroyWindow()发出 )--->PostQuitMessage()-->WM_QUIT-->GetMessage()-->程序结束