对话框退出调用什么函数主要看你按哪个按钮退出的了,一般就三种情况:
(1)点击IDOK按钮退出:先调用OnOK(),然后是OnDestory(),最后是PostNcDestroy()
(2)点击IDCANCEL按钮退出:先调用OnCancel(),然后是OnDestory(),最后是PostNcDestroy()
(3)点击右上角的关闭按钮退出:先OnClose(),搜索然后是OnCancel(),再然后是OnDestory() ,最后是PostNcDestroy()

 

http://blog.csdn.net/whh_1218/article/details/8467954

言而简之:

(1)用户点击退出按钮,发送了WM_CLOSE消息 (2)在WM_CLOSE消息的处理函数中,调用DestroyWindow() (3)在DestroyWindow()中发送了WM_DESTROY消息 (4)在WM_DESTROY消息中调用PostQuitMessage(),发送WM_QUIT消息,结束消息循环

综上,程序先调用OnClose()(也可能不调用),然后调用OnDestroy()(必调用),

所以,如果要进行程序结束时的清理工作,应该在OnDestroy()中,而不是在OnClose(),否则就有可能会出现内存泄漏的危险了!