当前目录存在是因为对于命令行工具来说非常方便。它通常对 GUI 应用程序没有太大用处,这可能是 Microsoft 的开发人员不担心允许 GetOpenFileName() 更改它的原因。当然,偶尔会出现极端情况,您可能正在处理其中一种情况,尽管很难从您所写的问题中看出端倪。(您绝对确定您想要当前目录而不是例如包含可执行文件的目录吗?)
无论如何,如果您确实想要当前目录,最安全的方法是在程序启动后立即检索它,并使用该保存的值来构建完全限定的路径。不要在您认为可能已更改时仅恢复原始当前目录,而是自己构建完全限定的路径。这在多线程代码或将来可能需要多线程的代码(即几乎所有内容)中尤其重要,但它也消除了忽略当前目录可能更改的一个或多个代码路径的风险.
如何保留默认的当前目录?
如果您阅读OPENFILENAME文档,则有一个OFN_NOCHANGEDIR用于该确切目的的标志:
如果用户在搜索文件时更改了目录,则将当前目录恢复为其原始值。
尽管文档声称,此标志在GetOpenFileName().
另请参阅 Raymond Chen 关于此主题的博客文章:
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |