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

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

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

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

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


我所期待的应该是弹出了保存对话框,但是应该是在哪个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. 如何将C# 7类库升级到C# 8?使用可空引用类型
  2. 一个AI产品经理怎么看AI的发展
  3. 《软件需求模式》阅读笔记一
  4. 恐龙拼图游戏 - 恐龙拼图乐园积木游戏
  5. cenotos 卸载mysql_CentOS 6.2编译安装Nginx1.0.12+MySQL5.5.21+PHP5.3.10 | 系统运维
  6. 【PAT乙级】1046 划拳 (15 分)
  7. [Medical Image Process] 3.4 Morphology Application—Watershed Algorithm 分水岭算法
  8. 搞懂正则表达式之基础篇
  9. k8s设置pod privileged权限(特权):securityContext.privileged=true
  10. Redis Cluster集群架构实现
  11. unity3D常见问题
  12. java304是什么错误_304 Not Modified 的意思 (Web的Cache问题)
  13. 支付宝玉伯:我心目中的优秀API
  14. SendMessage 与 PostMessage
  15. 简体中文原型设计工具对比
  16. 新能源车如何走出“一票否决”的窠臼?
  17. 小米android6.01 root,小米手机6详细刷成开发版开启root超级权限的教程
  18. 大白话讲调度:非支配遗传算法与柔性作业车间调度
  19. iOS 真机调试 Bundle Identifier
  20. 尚硅谷springboot笔记

热门文章

  1. 浅谈Chatbot的架构模型和响应机制
  2. Python压缩目录文件夹,解压目录文件夹及耗时效率统计
  3. 和12岁小同志搞创客开发:如何驱动LED点阵模块?
  4. 中秋祝福网页制作_中秋节祝福语不知怎么写?这3个小程序让你的祝福更精美...
  5. CUDA学习3-GridBlock
  6. 清空控制台Console.log()信息
  7. vim学习笔记(四)
  8. 34种墨西哥植物模型 Globe Plants – Bundle 34 Mexican Plants
  9. 嵌入式系统开发过程中遇到的——volatile
  10. 单机 “5千万以上“ 工业级 LRU cache 实现