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

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/p/2307821.html