您好,请教一下,为什么OnClose()函数中有代码就不会被执行(相应)?

真是怪哉,我在MFC的对话框中重载OnClose()函数,函数体中没有代码的时候此函数就会被执行,如下:
OnClose()
{
CdialogEx::OnClose();

}
在上面的函数体中下断点就能被断下,但是只要其中有一句代码比如:
OnClose()
{
cleanup();
CdialogEx::OnClose();

}
或者是:
OnClose()
{
int a=1;
CdialogEx::OnClose();

}
则此函数将不被执行,下断点也没反应,有知道的请赐教,谢谢!

精慕HU
浏览 440回答 1
1回答

缥缈止盈

我试了一下,在调用OnClose后又调用了OnBnClickedCancel,所以是多次delete的问题,应该在delete时这么写if(pstr != NULL){delete pstr;pstr = NULL;}(1)点击IDOK按钮退出:先调用OnOK(),然后是OnDestory(),最后是PostNcDestroy()(2)点击IDCANCEL按钮退出:先调用OnCancel(),然后是OnDestory(),最后是PostNcDestroy()(3)点击右上角的关闭按钮退出:先OnClose(),然后是OnCancel(),再然后是OnDestory() ,最后是PostNcDestroy()
打开App,查看更多内容
随时随地看视频慕课网APP