1. 点“确定”、“取消”时的关闭路由为
OnOK()或OnCancel() ---> EndDialog() ---> DestroyWindow() ---> OnDestroy() ---> PostNcDestroy()
2. 点“关闭”标题栏按钮的关闭路由为
OnClose()--->OnCancel() --->DestroyWindow() ---> OnDestroy() ---> PostNcDestroy()
所以OnClose()并不是关闭路由的必经路径, OnDestroy() 才是程序关闭的必经路径,因此重写OnDestroy() ,把需要在程序结束的操作全部放到了这个函数里面,OK了。
另外,需要分清楚窗口类成员和窗体成员:
窗体成员应该放在OnDestroy()里面销毁,否则窗体就不存在了;
窗口类成员可以放在窗口类的析构函数内销毁。