当另一个窗口关闭时关闭无模式对话框

时间:2013-12-17 04:04:54

标签: c++ visual-c++ visual-studio-2008 mfc

我有一个无模式对话框,我正在创建如下,

CPlotDlg * newd = new CPlotDlg ();
newd->Create(IDD_PLOT,this->GetParentOwner());
newd->SetParent(this->GetParentFrame()->GetParent());
newd->ShowWindow(SW_SHOW);

我想关闭另一个窗口(不是父窗口)时关闭此对话框。我怎样才能做到这一点? 感谢。

2 个答案:

答案 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()