在程序中有对话框A与对话框B.(A为父B为子)
打开程序进入A对话框,点对话框中的【进入】按钮进入B对话框,发现B对话框打开的时候,A对话框没有关闭,如何关闭呢?
A中【进入】按钮代码
CB dlg;
dlg.DoModal();我要返回多次进入B对话框,就是关闭B对话框,此时为A对话框,在点进入B对话框,在不关闭主程序时候,多次进入的B的话,发现内存有增长的情况,如何释放呢?
打开程序进入A对话框,点对话框中的【进入】按钮进入B对话框,发现B对话框打开的时候,A对话框没有关闭,如何关闭呢?
A中【进入】按钮代码
CB dlg;
dlg.DoModal();我要返回多次进入B对话框,就是关闭B对话框,此时为A对话框,在点进入B对话框,在不关闭主程序时候,多次进入的B的话,发现内存有增长的情况,如何释放呢?
dlg.DoModal();
有没有动态申请,都是的栈上怎么会泄漏?
A中OnEnter
B* b = new B();
b->Create(B::IDD, this);
b->CenterWindow(this);
ShowWindow(SW_HIDE);B中OnClose
CWnd* p = GetParent();
DestroyWindow();
p->ShowWindow(SW_SHOW);B中OnNcDestroy
delete this;
其实问题很简单,
在B中关闭A:
CWnd* p = GetParent();
p->ShowWindow(SW_HIDE);//仅将A框隐藏
在A中关闭B:
CWnd* pson = FindWindow(NULL,"B框名称");
if(pson != NULL)
{
pson ->ShowWindow(SW_HIDE);//仅将A框隐藏
}
在OnInitDialog中调用ShowWindow(SW_HIDE);对话框并不会隐藏。