2

我们需要在我们的应用程序中托管类似资源管理器的浏览器窗口。由于需要保持与 Windows XP 的兼容性,我们不能使用新的 IExplorerBrowser。

主要问题是我们需要默认以“大图标”模式显示项目。不幸的是,使用 FOLDERSETTINGS.viewMode = 0x1 /* LargeIcon */ 调用 IShellVIew.CreateViewWindow() 不会将视图模式更改为所需的。但我可以通过窗口中的上下文菜单手动执行此操作。

所以我们需要设置“大图标”查看模式。我没有找到任何以编程方式获取视图本身的上下文菜单的方法。

然后,我发现 IShellView2 似乎需要走的路 - IShellView2.CreateViewWindow2() 接收视图模式作为 GUID 而不是预定义的 const。但是无法访问界面!

IShellFolder.CreateViewObject(hwndOwner, typeof(IShellView).GUID) 返回正确的实例。但是当我尝试 IShellFolder.CreateViewObject(hwndOwner, typeof(IShellView2).GUID) 我有异常“指定的演员表无效”。

如何获取 IShellView2 接口的对象???

4

1 回答 1

4

调用 IShellView 对象上的 QueryInterface 方法来向它询问 IID_IShellView2。

于 2012-09-20T19:50:51.330 回答