我有一个无模式对话框,我正在创建如下,
CPlotDlg * newd = new CPlotDlg ();
newd->Create(IDD_PLOT,this->GetParentOwner());
newd->SetParent(this->GetParentFrame()->GetParent());
newd->ShowWindow(SW_SHOW);
我想关闭另一个窗口(不是父窗口)时关闭此对话框。我怎样才能做到这一点? 感谢。
答案 0 :(得分:1)
只需将CPlotDlg *保存到其他窗口,该窗口将用于关闭CPlotDlg窗口。
如果更近的窗口是SomeWhereDlg,
class SomeWhereDlg
{
public:
...
...
CPlotDlg* m_plotDlg;
};
void SomeWhereDlg::SetPlotDlg(CPlotDlg* plotDlg)
{
ASSERT(plotDlg);
if(plotDlg == nullptr) { return;}
m_plotDlg = plotDlg;
}
然后,在创建CPlotDlg窗口时,保存指针。
CPlotDlg* newd = new CPlotDlg ();
//Save newd(CPlotDlg*) to somewhere
//i.e) specific window which will close this newd window
//SomeWhereDlg->SetPlotDlg(newd);
newd->Create(IDD_DIALOG1,this->GetParentOwner());
newd->SetParent(this);
newd->ShowWindow(SW_SHOW);
如果发生结束事件,只需通过m_plotDlg调用Close()或删除等。
答案 1 :(得分:0)
关闭无模式对话框,将指针保存为CodeDreamer显示,并调用m_plotDlg-> DestroyWindow()