求问CMainFrame中的DestroyWindow函数执行完后,CMainFrame的对象指针是否变为NULL?解决思路
求问CMainFrame中的DestroyWindow函数执行完后,CMainFrame的对象指针是否变为NULL?
求问CMainFrame中的DestroyWindow函数执行完后,CMainFrame的对象指针是否变为NULL?
我测试的没有变成NULL,MSDN里面说CMainFrame执行完这个函数后会自动delete其指针.但是指针并没有变为NULL,请问这是怎么回事啊?应该怎么去改变这个指针为NULL呢?
------解决方案--------------------
这个是肯定的。
LZ可以做这样的测试:在程序中CDialog * pDlg = new CDialog();
delete pDlg;
if (NULL == pDlg)
{
AfxMessageBox( "指针为空 ");
}
else
{
AfxMessageBox( "指针不为空 ");
}
MainFrm也是对话框,所以没有什么特别的。
------解决方案--------------------
不会。
------解决方案--------------------
不会,DestroyWindow只是销了窗口,CMainFrame是一个对象指针,不可能会变为NULL
------解决方案--------------------
其实CMainFrame中的DestroyWindow函数执行完后只是完成了
窗口的销毁,框架对象还没有销毁。
真正销毁框架对象的是在PostNcDestroy中
void CMainFrame::PostNcDestroy()
{
// TODO: Add your specialized code here and/or call the base class
CFrameWnd::PostNcDestroy();//这个函数的执行代码就是 delete this
//LZ可以在这里单步跟踪一下,相信就明白了
}
CMainFrame执行完这个函数后会自动delete其指针,其实是一系列的动作
DestroyWindow结束后又会调用PostNcDestroy
------解决方案--------------------
假如我CPrintFrame打印预览窗体关闭了。这时我怎么去判断呢?
----------
响应关闭消息啊。WM_CLOSE。
我没有打开打印预览窗体这时的CPrintFrame又是什么样子呢?
----------
既然打开也是你程序做的,打没打开你设个标志不就结了。
------解决方案--------------------
delete 了
要浮空
delete ptr;
ptr = NULL;
不然
if ( ptr != NULL ) //是起不到检测作用的
求问CMainFrame中的DestroyWindow函数执行完后,CMainFrame的对象指针是否变为NULL?
我测试的没有变成NULL,MSDN里面说CMainFrame执行完这个函数后会自动delete其指针.但是指针并没有变为NULL,请问这是怎么回事啊?应该怎么去改变这个指针为NULL呢?
------解决方案--------------------
这个是肯定的。
LZ可以做这样的测试:在程序中CDialog * pDlg = new CDialog();
delete pDlg;
if (NULL == pDlg)
{
AfxMessageBox( "指针为空 ");
}
else
{
AfxMessageBox( "指针不为空 ");
}
MainFrm也是对话框,所以没有什么特别的。
------解决方案--------------------
不会。
------解决方案--------------------
不会,DestroyWindow只是销了窗口,CMainFrame是一个对象指针,不可能会变为NULL
------解决方案--------------------
其实CMainFrame中的DestroyWindow函数执行完后只是完成了
窗口的销毁,框架对象还没有销毁。
真正销毁框架对象的是在PostNcDestroy中
void CMainFrame::PostNcDestroy()
{
// TODO: Add your specialized code here and/or call the base class
CFrameWnd::PostNcDestroy();//这个函数的执行代码就是 delete this
//LZ可以在这里单步跟踪一下,相信就明白了
}
CMainFrame执行完这个函数后会自动delete其指针,其实是一系列的动作
DestroyWindow结束后又会调用PostNcDestroy
------解决方案--------------------
假如我CPrintFrame打印预览窗体关闭了。这时我怎么去判断呢?
----------
响应关闭消息啊。WM_CLOSE。
我没有打开打印预览窗体这时的CPrintFrame又是什么样子呢?
----------
既然打开也是你程序做的,打没打开你设个标志不就结了。
------解决方案--------------------
delete 了
要浮空
delete ptr;
ptr = NULL;
不然
if ( ptr != NULL ) //是起不到检测作用的