如何在Windows fileopen对话框中管理导航窗格?

时间:2013-04-17 17:07:07

标签: c++ winapi c++builder vcl

vista和win7中提供的标准OpenFile对话框允许您添加“应用程序链接”,它出现在对话框左侧导航窗格的顶部。在附带的屏幕截图中,我添加了2个文件夹。我正在使用C ++ Builder,使用TFavoriteLinkItems非常简单,我不确定Visual Studio(或其他)用户是如何做到的。

file open dialog

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

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

1 个答案:

答案 0 :(得分:2)

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

在vcl意义上,TFileOpenDialog选项包含HidePinnedPlaces选项。这将从导航窗格中删除所有内容,但使用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