MFC调用CFileDialog之后目录居然会改变,调试了好久终于发现是这个问题,上网搜了下,发现也有人和我出现相同的问题。他的博客如下:

http://www.programlife.net/current-directory-changed-after-using-cfiledialog.html

MFC调用CFileDialog之后目录改变
2011年5月28日 代码疯子 发表评论 阅读评论
今天在写MFC程序时发现调用CFileDialog之后,再来用相对路径打开程序目录下的文件就不对了,打不开了。后来一调试,发现是程序的路径变成了CFileDialog所选择的路径。

解决方法:在调用CFileDialog的DoModal之前使用GetCurrentDirectory获取程序的目录并且保存下来,然后在DoModal之后嗲用SetCurrentDirectory恢复就可以了。这不会影响到CFileDialog的目录,因为它使用的是绝对路径。

--------------------------------------------------------------------------------
感谢gewala提醒:
在CFileDialog的dwFlags 设置标志OFN_NOCHANGEDIR就可以了,不会改变目录的。(这方法更加方便)
Copyed From 程序人生

转载于:https://www.cnblogs.com/seacode/archive/2011/12/30/2307821.html

MFC调用CFileDialog之后目录居然会改变,调试了好久终于发现是这个问题相关推荐

  1. cfiledialog对话框大小_利用MFC的CFileDialog生成Windows2000文件对话框 (转)

    利用MFC的CFileDialog生成Windows2000文件对话框 (转)[@more@] 利用MFC的CFileDialog生成windows2000文件对话框 周鸣扬 自Windows2000 ...

  2. 利用MFC调用libvlc.dll作一个简单的播放器

    简单介绍MFC调用libvlc.dll作一个简单的播放器,抛砖引玉,各位VC++达人继续深入研究,Jeremiah对VC++确实不太感兴趣,所以就不做太深入的研究了. 2009.10.29修改:加入c ...

  3. C#调用exe工作目录

    C#程序中调用exe发现一个现象. 分别是A.exe一个路径,B.exe和C.exe在另一个相同路径. A.exe调用B.exe,然后B.exe调用C.exe就出现了C.exe调用不正常的现象. 原来 ...

  4. Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略

    Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略 目录

  5. 可以供MFC调用的,QT实现的DLL(qtwinmigrate实现)

    MFC和QT的消息循环机制不同,所以,要让QT写的DLL可以供MFC调用,要做一点特殊的处理 #include <qmfcapp.h> #include <qwinwidget.h& ...

  6. MFC调用Qt生成的dll

    MFC和QT的消息循环机制不同,所以,要让QT写的DLL可以供MFC调用,要做一点特殊的处理 [cpp] view plaincopyprint? #include <qmfcapp.h> ...

  7. MFC调用dos窗口使用printf,cout打印输出

    当我们使用AllocConsole函数调用一个dos窗口时,mfc为我们提供了几个打印函数比如_printf等用来向此终端打印输出信息,但是你会发现标准c语言的printf失效了,是因为mfc在帮我们 ...

  8. 在form2中调用form1中的方法并改变form1中控件值的另一种方法

    在窗体编程中,经常碰到到要在form2中调用form1中的方法并改变form1中控件值,但是又不能用new form1这种方法,因为这是生成一个实例. 网上有些说法是用委托和事件,笔者尝试没有成功,可 ...

  9. MFC 教程【10_内存分配方式和调试机制 】

    内存分配方式和调试机制 M内存分配 内存分配函数 MFCWin32或者C语言的内存分配API,有四种内存分配API可供使用. Win32的堆分配函数 每一个进程都可以使用堆分配函数创建一个私有的堆── ...

最新文章

  1. axios的this指向_vue使用axios中 this 指向问题
  2. python中if else语句用法_讲解Python中if语句的嵌套用法
  3. 裁员屠刀下一个目标会是谁?
  4. Confusion matrix
  5. [以太坊源代码分析] VI. 基于p2p的底层通信(上篇)
  6. 对新手的忠告:拒绝创意,回归基础
  7. angularjs 读取mysql_如何使用AngularJS PHP从MySQL获取数据
  8. Angular父子Component之间的事件通知机制
  9. centos8上安装nginx
  10. js中将时间字符串转换为时间戳
  11. 计算机网络具有双重性特点,计算机网络(本)_201806_模拟卷2_答案
  12. google支付接入PHP语言,PHP语言开发Paypal支付demo的具体实现
  13. 斐讯k2修改dns服务器,斐讯K2固件修改的一些信息
  14. sip信令超时时间调整
  15. Installed Build Tools revision 33.0.0 is corrupted. Remove and install again using the SDK Manager
  16. 彻底弄懂GMT、UTC、时区和夏令时
  17. Centos 6.10 安装docker
  18. 计算机组装配置(2019年 CPU及显卡天梯图)
  19. 电子邮件链接格式html主题,HTML的电子邮件链接标签mailto用法详解
  20. framework层的event_log分析

热门文章

  1. todoist 无法登陆_通过构建Todoist克隆将您的React技能提升到一个新的水平
  2. 项目部署时网关怎么回事_使用Kubernetes部署聊天网关(或技术按预期运行时)...
  3. react 统一字段验证_如何使用React的受控输入进行即时表单字段验证
  4. php 自动返回,PHP实现自动识别Restful API的返回内容类型
  5. 2021年还适合参加软件测试培训吗
  6. 从一道面试题分析Thread.interrupt方法
  7. EOS Chain/Wallet RPC API的PHP开发包
  8. 开源 免费 java CMS - FreeCMS1.9 全文检索
  9. LinearLayout增加divider分割线
  10. 1.0 封装后的布局成本