MFC模态与非模态对话框

模态:在该窗口弹出后,会阻塞应用程序的窗口,使其不可操作;
非模态:不会阻塞应用程序的窗口,两者可独立操作
模态对话框
功能:点击提示框按钮弹出新建的对话框
1.导入新对话框类
个人认为最好在主对话框的头文件中导入
2.
void CmfctestDlg::OnBnClickedButton1() //提示框按钮 { CmyDialog dlg;//创建新建对话框类的实例 dlg.DoModal();//弹出对话框--模态 }
示例工程下载:链接:https://pan.baidu.com/s/1UVVZoD0doh6jL18rQPuQQQ 提取码:6666
非模态对话框
容易犯的错误
创建的对话框会一闪而过:原因dlg是局部变量(在栈中申请的内存),对话框显示后,按钮函数OnBnClickedButton1马上结束,dlg被销毁了
正确方法
dlg对话框在堆中申请内存即可
方法一:全局变量
到这一步:运行程序,第一次点击运行 正常,关闭后 第二次点击会 弹出错误对话框
原因:每次单击都会调用 Create函数,该函数是初始化函数,会创建一个非模态对话框(一个对象只对应一个对话框,即一个对象只初始化一次),多次调用 Create 函数会导致程序崩掉
解决办法把 Create函数 放到主窗口类的初始化函数中,就不会重复创建
示例工程下载:
链接:https://pan.baidu.com/s/1aiUGSmRxTcfUR8uidTNKkw 提取码:6666
方法二:new
出现的问题与全局变量类似
方法三:malloc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2020-11-20 ptotoshop-图片透明处理
2020-11-20 photoshop--目录
2019-11-20 葫芦丝教程