博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

OnClose() OnOK() OnCancel()(转)

Posted on 2011-07-13 13:55  扬名  阅读(348)  评论(0编辑  收藏  举报

  点“确定”后的关闭路由:OnOK()---> UpdateData(TRUE) ---> EndDialog() ---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy() 

  点“取消”后的关闭路由:OnCancel() ---> EndDialog() ---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy()

  点“关闭[X]”后的关闭路由:OnClose()---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy()

  

  在单视图程序中,根据《深入浅出MFC》介绍,程序退出时执行的操作顺序为(从点[X]按钮开始)

  (1)点击[X]关闭按钮,发送了WM_CLOSE消息----->响应OnClose()
  (2)在OnClose()中,调用DestroyWindow()----->销毁与指定CWnd窗口对象关联的窗口,但未销毁CWnd对象
  (3)在DestroyWindow()中发送了WM_DESTROY消息----->窗口销毁后响应OnDestroy()
  (4)在WM_DESTROY消息中调用PostQuitMessage(),发送WM_QUIT消息,结束消息循环