6

有没有办法更改/添加到 Windows 打开/保存常用对话框以添加额外的功能?

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

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

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

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

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

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

4

3 回答 3

5

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

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

我已经创建了一些非常复杂的,我希望我可以包括一个截图。

于 2008-09-29T18:55:01.833 回答
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++ 工作时,这些信息最相关。

于 2008-09-29T18:02:41.537 回答
0

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

于 2008-09-29T15:19:30.027 回答