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

来源:互联网 发布:java 菜鸟教程书籍 编辑:程序博客网 时间:2024/06/03 09:11

标题一:创建模态窗口

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;    }}步骤四://子窗口销毁时,子窗口指针赋NULLvoid CMyTip::OnDestroy()//子窗口销毁时会调用{    CDialogEx::OnDestroy();//原有代码    AfxMessageBox(TEXT("delete 4"));    CMy2048Dlg* m_parent = (CMy2048Dlg*)GetParent();    //关键:获取父窗口指针    m_parent->m_mytip = NULL;}
1 0
原创粉丝点击