首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GetOpenFileName变更目录

GetOpenFileName变更目录
EN

Stack Overflow用户
提问于 2009-01-22 08:15:33
回答 2查看 1.9K关注 0票数 1

问题:

有人知道如何更改已在运行的打开文件对话框的当前目录吗?

详细信息:

我有一个定制的打开文件对话框(使用自定义模板添加额外的控件),该对话框还关闭了所有验证、现有检查和创建测试(通过OpenFileName标志)。

关闭这些功能将禁用对话框的内置行为,如果用户将文件夹名称键入“文件名”组合框并单击enter键,对话框将导致该对话框更改当前显示的文件夹。

我想把这种行为加回去。我可以通过钩子程序检测到什么时候发生这种情况。我隐藏了OK按钮,关闭了它的加速器,并将自己的"select“按钮放在控件上。这意味着我唯一一次收到CDN_FILEOK消息是当用户在输入文本框后点击enter。

但是,我想不出如何以编程方式告诉对话框更改当前目录。

我在想,我可以通过向窗口中的SHELLDLL_DefView控件发送某种消息来完成这个任务,但是我还没有找到任何关于它的文档。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-23 00:14:28

我在周围找到了一份工作。

结果是,当关闭验证时,输入以"\“结尾的目录名仍然会更改所显示的文件夹,但键入不以"\”结尾的目录名则不会。

使用spy++,我能够看到,当enter被击中时,WM_COMMAND消息将被发送到带有wParam参数的公共对话框控件,该参数的高阶单词是BN_CLICKED,低阶单词是ID_OK。

如果子类为公共对话框,则可以拦截消息,更改文件名组合框中的文本,将消息转发到原始子类过程,然后再更改文本。

这有点麻烦,但它使我能够从对话框中得到我想要的行为。

票数 0
EN

Stack Overflow用户

发布于 2009-01-22 08:28:35

我不确定直接的答案,但是如果您有SPY++或任何其他消息窥探程序,请尝试检查当您更改普通OpenFileName对话框的目录时经过的消息。你可能会在那里找到答案(尽管这是很难的出路)。

不过,其他人可能会马上就知道答案,但愿他们知道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/468398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档