非模式对话框销毁有关问题
非模式对话框销毁问题
我在一个线程里对多个对话框进行管理
以上代码要实现打开一个对话框, 关闭一个对话框.
但是发送 WM_CLOSE 的时候, 调试输出显示
Warning: calling DestroyWindow in CDialog::~CDialog --
OnDestroy or PostNcDestroy in derived class will not be called.
所以有个疑问, 我在发送WM_CLOSE之后调用了delete, 是不是完全销毁了窗口? 还是说delete之后窗口扔在内存中运行?
如果delete能销毁窗口, 有没有必要在delete之前发送WM_CLOSE消息?
------解决方案--------------------
pCurWnd->DestroyWindow(); //关闭旧窗口
------解决方案--------------------
非模态对话框WM_CLOSE,你认为是关闭吧,其实是隐藏。
我在一个线程里对多个对话框进行管理
- C/C++ code
CWnd *pNewWnd = NULL; pNewWnd = new CDlgNewDlg; ((CDialog *)pNewWnd)->Create(lNewDlgID, this); //创建新窗口 pNewWnd->ShowWindow(SW_SHOW); pCurWnd->SendMessage(WM_CLOSE); //关闭旧窗口 delete pCurWnd; pCurWnd = pNewWnd; pNewWnd = NULL;
以上代码要实现打开一个对话框, 关闭一个对话框.
但是发送 WM_CLOSE 的时候, 调试输出显示
Warning: calling DestroyWindow in CDialog::~CDialog --
OnDestroy or PostNcDestroy in derived class will not be called.
所以有个疑问, 我在发送WM_CLOSE之后调用了delete, 是不是完全销毁了窗口? 还是说delete之后窗口扔在内存中运行?
如果delete能销毁窗口, 有没有必要在delete之前发送WM_CLOSE消息?
------解决方案--------------------
pCurWnd->DestroyWindow(); //关闭旧窗口
------解决方案--------------------
非模态对话框WM_CLOSE,你认为是关闭吧,其实是隐藏。