要销毁非模态对话框的时候,我看书上都要有一个指针要来判断非模态对话框销毁没有,设为NULL。但是我下面这样做,第一次运行的时候,是正常的,当再运行的时候就出现问题了。
void CDlView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (m_pTest==NULL)
{m_pTest=new CTest(this);
m_pTest->Create(IDD_DIALOG1,this);
m_pTest->ShowWindow(SW_SHOW); }
else
{ m_pTest->SetActiveWindow();
} CView::OnLButtonDown(nFlags, point);
}
这是按左键 的时候弹出对话框的程序。m_pTest是指向CTest非模态对话框类的。
下面是当按非对话框类中的cancel键的程序:
void CTest::OnCancel()
{
// TODO: Add extra cleanup here
((CDlView*)GetParent())->m_pTest=NULL;
CDialog::OnCancel();
DestroyWindow();
}
CDlView是view类。
请高手指点。我觉得是不是((CDlView*)GetParent())->m_pTest=NULL;这句有问题?
void CDlView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if (m_pTest==NULL)
{m_pTest=new CTest(this);
m_pTest->Create(IDD_DIALOG1,this);
m_pTest->ShowWindow(SW_SHOW); }
else
{ m_pTest->SetActiveWindow();
} CView::OnLButtonDown(nFlags, point);
}
这是按左键 的时候弹出对话框的程序。m_pTest是指向CTest非模态对话框类的。
下面是当按非对话框类中的cancel键的程序:
void CTest::OnCancel()
{
// TODO: Add extra cleanup here
((CDlView*)GetParent())->m_pTest=NULL;
CDialog::OnCancel();
DestroyWindow();
}
CDlView是view类。
请高手指点。我觉得是不是((CDlView*)GetParent())->m_pTest=NULL;这句有问题?
//CDialog::OnCancel();不能调用,这是在销毁模态对话框void COptionsDialog::OnCancel ()
{
DestroyWindow ();
}void CxxxxDialog::PostNcDestroy ()
{
CDialog::PostNcDestroy ();
AfxGetMainWnd ()->SendMessage (WM_USER_DIALOG_DESTROYED, 0, 0);
delete this;
}