码迷,mamicode.com
首页 > 编程语言 > 详细

MFC 模态、非模态窗口引发的系列事件及函数

时间:2016-05-07 07:47:33      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

标题一:创建模态窗口

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;
}

MFC 模态、非模态窗口引发的系列事件及函数

标签:

原文地址:http://blog.csdn.net/qq_26728227/article/details/51331167

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!