MFC中模态对话框与非模态对话框的区别
来源:互联网 发布:淘宝店铺如何升级天猫 编辑:程序博客网 时间:2024/05/17 06:17
MFC程序中有两种类型的对话框:模态(Modal)对话框和非模态(Modeless)对话框。
模态对话框是指,当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中的其他任务。例如:一个程序打开了一个模态对话框后,不能进行对该对话框以外的任何操作,只能听到嘟嘟声。
非模态对话框是指,在显示时允许执行程序中其他任务,而不必关闭这个对话框,典型的例子就是记事本程序中的“查找”对话框,该对话框不会垄断用户的输入。甚至在一个程序中可以多次点击一个按键,打开多个相同的对话框。
在显示的方式上,模态对话框的创建,首先是实例化一个对话框对象,然后调用CDialog类的成员函数:DoModal,返回值作为CDialog类的另一个成员函数:EndDialog的参数,用于关闭模态对话框。
而非模态对话框,则需要利用CDialog类的Create成员函数,当利用Create函数创建非模态对话框时,还需要调用ShowWindow函数将对话框显示出来,DoModal函数之所以不需要,是因为DoModal函数就有显示对话框的作用。同时还要注意一点的是,创建非模态对话框,不能把对话框对象定义为局部对象,所以可以将其定义为指针以解决。而释放这个指针,可以通过重载CDialog的PostNcDestroy虚函数。最后,注意,当单击非模态对话框上的【ok】或者【cancel】按钮时,对话框窗口并未被销毁,只是隐藏起来了,所以需要调用DestroyWindow函数,以完成销毁工作。
最后,如果想像模态对话框一样,在一个程序中限制只能打开一次非模态对话框,可以增加一个标识说明是否已经打开了一个非模态对话框,这样程序将根据标志来决定是打开一个新的对话框,还是仅仅把原来打开的对话框激活。通常可以用指向对话框对象的指针作为这种标识,当对话框关闭时,给指针赋NULL值,以表明对话框对象已经不存在了。
- MFC中模态对话框与非模态对话框的区别
- MFC模态对话框与非模态对话框的区别总结
- MFC模态对话框与非模态对话框的区别
- MFC中模态对话框和非模态对话框的区别?
- MFC中模态对话框和非模态对话框的区别
- MFC中非模式对话框与模式对话框的区别
- MFC中模态与非模态对话框
- MFC学习笔记(一):模态对话框与非模态对话框的区别、创建及显示
- MFC 模块对话框和非模态对话框的创建与释放
- MFC模态对话框与非模态对话框的创…
- MFC中模态和非模态对话框的创建和区别
- MFC模态对话框与非模态对话框
- MFC模态对话框与非模态对话框
- MFC模态对话框与非模态对话框
- MFC模态对话框与非模态对话框
- MFC模态对话框与非模态对话框
- mfc 非模态对话框的创建与显示
- 模态对话框与非模态对话框 的区别
- 虚函数
- 解决使用mac自带的压缩工具在windows平台解压出现问题的事情
- 包含虚函数的类不能构建对象
- Java3D环境配置
- Linux下查看磁盘空间
- MFC中模态对话框与非模态对话框的区别
- 音乐行业的未来:把听众卖给广告主
- PLSQL Developer 链接Oracle数据库
- Oracle 去除两边空格
- 面向对象的三大特征:封装、继承、多态
- 纯虚函数
- bne %B0的理解
- 开通博客了
- TripAdvisor:2014年全球旅行者调查报告