我的毕业设计基本是搞完了,那么最近几天在做一些测试和修改。其中就有一个问题折腾了我好久,今天才发现,原来是这么回事。

我创建了一个非模态的子对话框,然后在这个子对话框中又创建了一个模态对话框,结果意外的是点击按钮弹出这个模态对话框时,原父对话框被至于前台了,即父对话框的父对话框被置于前台了,而不是父对话框被至于前台。具体看图:

   最下面黑色背景的是我的父窗口,前台的是一个非模态的子对话框,此时,子对话框在前台

     然后我准备下载文件,即将弹出一个保存文件的模态对话框

    点击下载后弹出的了保存文件模态对话框,但是原父窗口被弹出来置于前台了。


我所期待的应该是弹出了保存对话框,但是应该是在哪个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,拙见,小记!

模态对话框的父窗口设置相关推荐

  1. 我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值

    YUV播放器中,显示界面(主窗口)和设置界面分离,所有参数均在Setting子窗口设置,故需要主窗口和子窗口中实现参数传递.下面是方法. 1. 在主窗口CYUVPlayerDlg类中定义子窗口变量: ...

  2. 模态对话框和非模态对话框的消息循环分析

    1.非模态对话框和父窗口共享当前线程的消息循环 2.模态对话框新建一个新的消息循环,并由当前消息循环派发消息,而父窗口.模态对话框屏蔽了用户对它父窗口的操作,但是不是在消息循环里面屏蔽,所以给父窗口发 ...

  3. MFC中的模态对话框与非模态对话框的消息循环及消息传递问题(都可以通过SendMessage传递消息)

    注意:非模态和模态对话框都有自己的消息响应过程函数WindowPro,只不过他们的调用模态是自己的消息泵,非模态是由父窗体或父窗体的上一级的消息泵来调用.模态对话框和非模态对话框都可以通过SendMe ...

  4. 模态对话框和非模态对话框的消息循环

    1.非模态对话框和父窗口共享当前线程的消息循环 2.模态对话框新建一个新的消息循环,并由当前消息循环派发消息,而父窗口.模态对话框屏蔽了用户对它父窗口的操作,但是不是在消息循环里面屏蔽,所以给父窗口发 ...

  5. 转:模态对话框的支持 (IE,Firefox,Chrome)

    原文:模态对话框的支持 (IE,Firefox,Chrome) Opera 和 Chrome 对模态对话框(showModalDialog)的支持有缺陷,且非 IE 浏览器均不支持非模态对话框(sho ...

  6. Win32_SDK_非模态对话框(非模态对话框窗口的销毁,模态与非模态对比,计算器项目练习)

    文章目录 1. 模态对话框与非模态对话框对比 2. 计算器项目练习模态与非模态对话框 3. 代码位置 1. 模态对话框与非模态对话框对比 模态对话框是通过DialogBox函数生成窗口,且函数的返回值 ...

  7. PyQt编程之模态与非模态对话框(二)

    在上一篇里,实现的模态对话框的功能就是修改数据显示的格式,并进行提交后验证.在未应用该对话框之前,用户不能与对话框的父窗口以及父窗口的兄弟窗口就行交互,这样就保证了应用程序相关部分的状态不会在该对话框 ...

  8. MFC创建模态对话框与非模态对话框 执行顺序

    创建模态对话框 CDialog::DoModal virtual int DoModal(); 返回值: 整数值,指定了传递给CDialog::EndDialog 的nResult参数值.该函数用于关 ...

  9. MFC模态对话框和非模态对话框

    下面是一个我的手写的模态对话框和非模态对话框图: 模态对话框是指当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他任务.非模态对话框是指当其显示时,允许转而执行程序中其他任务 ...

最新文章

  1. 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以 及任何的比较语句。...
  2. 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明...
  3. 【Spring注解驱动开发】java工作流引擎框架
  4. java array 元素的位置_数据结构与算法:动态图解十大经典排序算法(含JAVA代码实现)...
  5. 深度神经网络实践:车牌识别
  6. PHP的Excel操作
  7. 如何为SAP API Portal上创建的API增添API key验证保护功能
  8. php 定时缓存,php页面设置缓存时间实例代码
  9. oracle 英文版安装,Oracle10gR2 on RHEL4 x86_64安装技术文档(英文原版)
  10. OpenGait:首个步态识别框架开源了!
  11. 今天起支付宝还信用卡开始收费 每月2000免费额度
  12. 【CSDN软考VIP资料群】让软考通过更容易,软考资料大全支持你软考!
  13. 2013程序员考证下午题练习
  14. matlab找最大值,如何在MATLAB中的矩阵列中找到最大值的索引?
  15. GIS应用技巧之数据结构(栅格与矢量)
  16. Python编程学习笔记 - 下载数据进行可视化(I)
  17. 软考--后缀式(逆波兰式)的两种求法
  18. 父类与子类的执行顺序
  19. Typora中的emoji图标标签
  20. [fyne] build constraints exclude all Go files in

热门文章

  1. 咕泡学院:(1)唐宇迪python课程作业
  2. android的xml置底_Android布局之xml设置
  3. NETGEAR拒绝连接请求_3分钟理解HTTP的请求与响应
  4. 基于SfM计算相机姿态
  5. 【进阶玩法】Angular用emit()实现类似Vue.js的v-model双向绑定[(ngModel)]功能
  6. Linux 下获取本机所有网卡 以及 网卡对应ip 列表
  7. C++ 互斥锁和条件变量实现读写锁
  8. Qt 编译一直死循环问题
  9. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
  10. unity编辑器扩展_01(在工具栏中创建一个按钮)