首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >GetOpenFileName更改目录?

GetOpenFileName更改目录?
EN

Stack Overflow用户
提问于 2018-09-13 01:50:25
回答 2查看 0关注 0票数 0

题:

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

细节:

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

关闭这些内容将禁用对话框的内置行为,如果用户在“文件名”组合框中键入文件夹名称并按Enter键,则会导致其更改当前显示的文件夹。

我想补充一下这种行为。我可以通过钩子程序检测到这种情况。我已经隐藏了OK按钮,关闭了它的加速器,并在控件上放置了我自己的“选择”按钮。这意味着我收到CDN_FILEOK消息的唯一时间是用户在键入后点击文本框中的输入。

但是,我无法弄清楚如何以编程方式告诉对话框更改当前目录。

我想我可以通过向窗口中的SHELLDLL_DefView控件发送某种消息来完成此操作,但我无法在其上找到任何文档。

EN

回答 2

Stack Overflow用户

发布于 2018-09-13 10:25:55

我能够找到一个解决方法。

事实证明,当关闭验证时,键入以“\”结尾的目录名仍将更改正在显示的文件夹,但输入不以“\”结尾的目录名称则不会。

使用spy ++我能够看到当命中输入时,WM_COMMAND消息将被发送到具有wParam参数的公共对话框控件,其高阶字是BN_CLICKED并且其低阶字是ID_OK。

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

这有点破解,但它使我能够从对话框中获得我想要的行为。

票数 0
EN

Stack Overflow用户

发布于 2018-09-13 11:02:40

我不确定直接的答案,但如果您有SPY ++或任何其他消息侦听程序,请尝试检查更改正常的OpenFileName对话框目录时所发生的消息。你可能会在那里找到答案(虽然这是困难的方法)。

其他人可能会知道答案的副作用; 让我们希望他们这样做。

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

https://stackoverflow.com/questions/-100000760

复制
相关文章

相似问题

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