标签:
标题一:创建模态窗口
CAdditionDlg dlg; // 定义对话框类CAdditionDlg的对象dlg
INT_PTR nResponse = dlg.DoModal();//获取子窗口的结束方式
switch(nResponse)
{
case IDOK:
case IDCANCEL:
case IDDESTROY:
}
标题二:创建非模态子窗口(完美解决非模态窗口单例问题)
步骤一:创建子窗口指针类型的公有成员
public:
CMyTip* m_mytip;
步骤二:父类通过按钮显示非模态子窗口
void CMy2048Dlg::OnBnClickedButton11()
{
if(NULL == m_mytip)//判断子窗口是否已经打开
{
m_mytip = new CMyTip();
m_mytip->Create(IDD_DIALOG1,this);
//m_mytip->DoModal;
m_mytable->ShowWindow(SW_SHOW);
//模态跟非模态区别的关键
}
else{
AfxMessageBox(TEXT("NO AGAIEN"));
}
}
步骤三:父类析构函数,释放子类窗口指针
CMy2048Dlg:: ~CMy2048Dlg()
{
if(NULL!= m_mytip)
{
delete m_mytip;
}
}
步骤四://子窗口销毁时,子窗口指针赋NULL
void CMyTip::OnDestroy()//子窗口销毁时会调用
{
CDialogEx::OnDestroy();//原有代码
AfxMessageBox(TEXT("delete 4"));
CMy2048Dlg* m_parent = (CMy2048Dlg*)GetParent();
//关键:获取父窗口指针
m_parent->m_mytip = NULL;
}
标签:
原文地址:http://blog.csdn.net/qq_26728227/article/details/51331167