【问题标题】:Changing/Adding controls to the windows Open/Save common dialog更改/添加控件到窗口打开/保存通用对话框
【发布时间】:2010-09-14 00:41:55
【问题描述】:

有没有办法改变/添加到窗口打开/保存通用对话框以添加额外的功能?

在工作中,我们在服务器上有一个区域,其中包含数百个“工作文件夹”——只是由数据库应用程序自动创建/管理的普通 Windows 文件夹,用于存放有关工作的信息(电子邮件/扫描的传真/Word 文档/电子表格/照片等) ) 文件夹以作业编号命名。

我想用一个组合框扩展标准打开/保存对话框,该组合框根据数据库中的标签搜索作业文件夹,这样无论我的用户在做什么,他们都可以轻松找到正确的作业文件夹来查找/保存他们的工作

连接到数据库并提供搜索功能是没有问题的,但是有没有办法在对话框中添加一个组合框控件(最好是带有按键/按键事件)?

或者创建我自己的对话框并调用/使用它来代替标准对话框?即,从任何应用程序都会调用我的对话框,以便轻松访问作业文件夹。如果他们在 Outlook 中,他们可以快速找到工作文件夹,如果他们使用记事本,他们仍然可以轻松找到该文件夹​​。

这意味着一种从任何应用程序中查找工作文件夹的新统一方式。

理想情况下,有人会知道使用 VB/VB.net/C# 的方法,但我猜,如果可能的话,它可能会是 C++。

【问题讨论】:

    标签: .net c++ openfiledialog savefiledialog


    【解决方案1】:

    就像 Mark Ransom 所说,您可以使用 OFN ENABLETEMPLATE 和 OFN ENABLEHOOK 标志来做到这一点。然后为 OPENFILENAME 结构的 lpTemplateName 数据成员指定一个对话框资源。正确放置控件需要反复试验。

    您编写的挂钩过程将接收特定于该对话框的窗口消息 - 您对 WM_NOTIFY 消息特别感兴趣 - 有很多特殊消息(CDN INITDONE、CDN FOLDERCHANGE 等)。

    我已经创建了一些非常精细的一些,我希望我可以附上截图。

    【讨论】:

    • 谢谢,这看起来不错!我之前已经设置了捕捉鼠标事件和击键的钩子。你能解释一下基本步骤是什么,即我的代码在哪里?它会是某个地方的dll吗?有没有办法使用 VisualStudio.Net 2003 或 SharpDevelop 来做到这一点?谢谢
    【解决方案2】:

    Windows API 的相关 Microsoft 文档在这里:
    http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspx
    http://msdn.microsoft.com/en-us/library/ms646839(VS.85).aspx

    特别注意 OFN_ENABLETEMPLATE 和 OFN_ENABLEHOOK 标志。

    正如您所说,当您使用 C/C++ 工作时,这些信息最相关。

    【讨论】:

      【解决方案3】:

      您的程序可以设置起始文件夹,因此如果您知道作业编号(以及文件夹的名称),您可以将对话框设置为从已打开的正确文件夹开始。除此之外,我认为如果不为其编写完整的 shell 扩展,您将无能为力。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        相关资源
        最近更新 更多