c++ - 如何管理 Windows 文件打开对话框中的导航 Pane ?

标签 c++ winapi c++builder vcl

vista 和 win7 中可用的标准打开文件对话框允许您添加显示在对话框左侧导航 Pane 顶部的“应用程序链接”。在随附的屏幕截图中,我添加了 2 个文件夹。我正在使用 C++Builder,它使用 TFavoriteLinkItems 非常简单,我不确定 Visual Studio(或其他)用户会怎么做。

file open dialog

问题是我在折叠文件夹并将窗口滚动到顶部后截取了屏幕截图。在正常情况下,用户甚至不会注意到我添加了这些链接,因为导航 Pane 将以初始目录为中心,并且库或用户(在本例中为“Marc”)文件夹也可能会展开。

有没有办法以编程方式强制将 Pane 滚动到顶部,或者折叠所有打开的文件夹,“应用程序链接”除外?

最佳答案

我找到了答案,而且非常简单。

在 vcl 意义上,TFileOpenDialog 选项包括一个用于 HidePinnedPlaces 的选项。这将从导航 Pane 中删除所有内容,但使用 FavoriteLinks::add 添加的项目除外,如上所述。

在更面向 Microsoft 的方法中,IFileDialog::SetOptions 方法是值得关注的地方。此处描述了所有选项: http://msdn.microsoft.com/en-us/library/windows/desktop/bb761832%28v=vs.85%29.aspx.

您可以使用 shell: 文件夹来添加我的电脑或其他,这在您完成所有其他操作后非常方便。 C++Builder 代码如下所示:

void TMyForm::AddFolderLinks() {
  TFavoriteLinkItem * link = FileOpenDialog1->FavoriteLinks->Add();
  link->Location = "shell:MyComputerFolder";
  link = FileOpenDialog1->FavoriteLinks->Add();
  link->Location = "shell:Libraries";
  link = FileOpenDialog1->FavoriteLinks->Add();
  link->Location = ExtractFilePath(Application->ExeName);
  link = FileOpenDialog1->FavoriteLinks->Add();
  link->Location = "c:\\projects\\Athabasca";
}

并产生以下内容,这正是我想要的: improved open dialog

关于c++ - 如何管理 Windows 文件打开对话框中的导航 Pane ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16066011/

相关文章:

C++ 将值添加到堆栈下标需要数组或指针类型和警告

c++ - 如何使用 Eigen 库计算矩阵幂?

c++ - 我的代码从另一个进程附加和使用控制台有什么问题?

c - 全局内存状态Ex() (Win32)

c++ - 在 Embarcadero RAD Studio XE 中使用 Visual Studio DLL?

c - C++ Builder 中符号链接(symbolic link)的替代方案

c++ - boost::asio::yield_context:意外的 forced_unwind 异常

c++ - 需要一种在 C++ 中设置所有接口(interface)上的 DNS 服务器的方法

c# - 检查显示是否被 Windows 电源管理关闭

mysql - 使用 mysql 数据库部署 bcb6 应用程序的最佳方法?