模态对话框的父窗口设置
我的毕业设计基本是搞完了,那么最近几天在做一些测试和修改。其中就有一个问题折腾了我好久,今天才发现,原来是这么回事。
我创建了一个非模态的子对话框,然后在这个子对话框中又创建了一个模态对话框,结果意外的是点击按钮弹出这个模态对话框时,原父对话框被至于前台了,即父对话框的父对话框被置于前台了,而不是父对话框被至于前台。具体看图:
最下面黑色背景的是我的父窗口,前台的是一个非模态的子对话框,此时,子对话框在前台
然后我准备下载文件,即将弹出一个保存文件的模态对话框
点击下载后弹出的了保存文件模态对话框,但是原父窗口被弹出来置于前台了。
我所期待的应该是弹出了保存对话框,但是应该是在哪个FTP 客户端上才对啊!
其实原因很简单,我们习惯创建模态对话框都是这样操作的:
CNewDlg * pmydlg=new CNewDlg();
if(pmydlg->DoModal()==IDOK)
{ //如何如何
}
注意上面定义CNewDlg * pmydlg=new CNewDlg();的同时也是构造了该对象,那么其实并不完整,因为没有指定它的父对话框,默认就变成了原父对话框,所以会出现上面的问题,那么如何解决呢?很简单,修改一下就OK了.
CNewDlg * pmydlg=new CNewDlg(this);
执行后就是下面的效果:
OK,至此。接下来引用别人的CFileDialog使用总结。
CFileDialog经常用,但经常忘,现归纳整理下,方便今后查询。
例子:
CFileDialog openDlg( TRUE, “Material File(.material)|.material”, NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"Material File(*.material)|*.material||", this);
CFileDialog构造函数原型如下:
CFileDialog::CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
参数意义如下:
bOpenFileDialog 为TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。lpszDefExt 指定默认的文件扩展名。
lpszFileName 指定默认的文件名。
dwFlags 指明一些特定风格。 (默认OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT)
lpszFilter 指明可供选择的文件类型和相应的扩展名。
pParentWnd 为父窗口指针。
其中,扩展名应遵循下面的格式:
“Chart Files (.xlc)|.xlc| Worksheet Files (.xls)|.xls| Data Files (.xlc;.xls)|.xlc ; .xls| All Files (.)|.||”;
文件类型说明和扩展名间用 | 分隔,同种类型文件的扩展名间可以用 ; 分割,每种文件类型间用 | 分隔,末尾用 || 指明。
CString CFileDialog::GetPathName( ) 得到完整的文件名,包括目录名和扩展名如:c:/test/test1.txt
CString CFileDialog::GetFileName( ) 得到完整的文件名,包括扩展名如:test1.txt
CString CFileDialog::GetExtName( ) 得到完整的文件扩展名,如:txt
CString CFileDialog::GetFileTitle ( ) 得到完整的文件名,不包括目录名和扩展名如:test1
POSITION CFileDialog::GetStartPosition( ) 对于选择了多个文件的情况得到第一个文件位置。
CString CFileDialog::GetNextPathName( POSITION& pos ) 对于选择了多个文件的情况得到下一个文件位置,同时返回当前文件名。但必须已经调用过POSITION CFileDialog::GetStartPosition( )来得到最初的POSITION变量。
需要注意的是,用了CFileDialog之后,会把程序的当前路径设置成选中文件的路径
所以,如果程序里有用到IO访问或者数据库访问之类的本地操作时,需要注意你的当前路径
用相对路径的话就不是原来你的程序路径了,切记!
ok,拙见,小记!
模态对话框的父窗口设置相关推荐
- 我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值
YUV播放器中,显示界面(主窗口)和设置界面分离,所有参数均在Setting子窗口设置,故需要主窗口和子窗口中实现参数传递.下面是方法. 1. 在主窗口CYUVPlayerDlg类中定义子窗口变量: ...
- 模态对话框和非模态对话框的消息循环分析
1.非模态对话框和父窗口共享当前线程的消息循环 2.模态对话框新建一个新的消息循环,并由当前消息循环派发消息,而父窗口.模态对话框屏蔽了用户对它父窗口的操作,但是不是在消息循环里面屏蔽,所以给父窗口发 ...
- MFC中的模态对话框与非模态对话框的消息循环及消息传递问题(都可以通过SendMessage传递消息)
注意:非模态和模态对话框都有自己的消息响应过程函数WindowPro,只不过他们的调用模态是自己的消息泵,非模态是由父窗体或父窗体的上一级的消息泵来调用.模态对话框和非模态对话框都可以通过SendMe ...
- 模态对话框和非模态对话框的消息循环
1.非模态对话框和父窗口共享当前线程的消息循环 2.模态对话框新建一个新的消息循环,并由当前消息循环派发消息,而父窗口.模态对话框屏蔽了用户对它父窗口的操作,但是不是在消息循环里面屏蔽,所以给父窗口发 ...
- 转:模态对话框的支持 (IE,Firefox,Chrome)
原文:模态对话框的支持 (IE,Firefox,Chrome) Opera 和 Chrome 对模态对话框(showModalDialog)的支持有缺陷,且非 IE 浏览器均不支持非模态对话框(sho ...
- Win32_SDK_非模态对话框(非模态对话框窗口的销毁,模态与非模态对比,计算器项目练习)
文章目录 1. 模态对话框与非模态对话框对比 2. 计算器项目练习模态与非模态对话框 3. 代码位置 1. 模态对话框与非模态对话框对比 模态对话框是通过DialogBox函数生成窗口,且函数的返回值 ...
- PyQt编程之模态与非模态对话框(二)
在上一篇里,实现的模态对话框的功能就是修改数据显示的格式,并进行提交后验证.在未应用该对话框之前,用户不能与对话框的父窗口以及父窗口的兄弟窗口就行交互,这样就保证了应用程序相关部分的状态不会在该对话框 ...
- MFC创建模态对话框与非模态对话框 执行顺序
创建模态对话框 CDialog::DoModal virtual int DoModal(); 返回值: 整数值,指定了传递给CDialog::EndDialog 的nResult参数值.该函数用于关 ...
- MFC模态对话框和非模态对话框
下面是一个我的手写的模态对话框和非模态对话框图: 模态对话框是指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他任务.非模态对话框是指当其显示时,允许转而执行程序中其他任务 ...
最新文章
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。...
- 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明...
- 【Spring注解驱动开发】java工作流引擎框架
- java array 元素的位置_数据结构与算法:动态图解十大经典排序算法(含JAVA代码实现)...
- 深度神经网络实践:车牌识别
- PHP的Excel操作
- 如何为SAP API Portal上创建的API增添API key验证保护功能
- php 定时缓存,php页面设置缓存时间实例代码
- oracle 英文版安装,Oracle10gR2 on RHEL4 x86_64安装技术文档(英文原版)
- OpenGait:首个步态识别框架开源了!
- 今天起支付宝还信用卡开始收费 每月2000免费额度
- 【CSDN软考VIP资料群】让软考通过更容易,软考资料大全支持你软考!
- 2013程序员考证下午题练习
- matlab找最大值,如何在MATLAB中的矩阵列中找到最大值的索引?
- GIS应用技巧之数据结构(栅格与矢量)
- Python编程学习笔记 - 下载数据进行可视化(I)
- 软考--后缀式(逆波兰式)的两种求法
- 父类与子类的执行顺序
- Typora中的emoji图标标签
- [fyne] build constraints exclude all Go files in
热门文章
- 咕泡学院:(1)唐宇迪python课程作业
- android的xml置底_Android布局之xml设置
- NETGEAR拒绝连接请求_3分钟理解HTTP的请求与响应
- 基于SfM计算相机姿态
- 【进阶玩法】Angular用emit()实现类似Vue.js的v-model双向绑定[(ngModel)]功能
- Linux 下获取本机所有网卡 以及 网卡对应ip 列表
- C++ 互斥锁和条件变量实现读写锁
- Qt 编译一直死循环问题
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
- unity编辑器扩展_01(在工具栏中创建一个按钮)