我们需要在我们的应用程序中托管类似浏览器的浏览器窗口。我们不能使用新的IExplorerBrowser,因为需要保持与Windows XP的兼容性。
主要问题是我们需要默认以“大图标”模式显示项目。不幸的是,使用FOLDERSETTINGS.viewMode = 0x1 / * LargeIcon * /调用IShellVIew.CreateViewWindow()不会将视图模式更改为所需。但我可以通过窗口中的上下文菜单手动完成此操作。
所以我们需要设置“大图标”视图模式。我没有找到任何方法以编程方式获取视图本身的上下文菜单。
然后,我发现IShellView2似乎需要走的路 - IShellView2.CreateViewWindow2()接收视图模式为GUID而不是预定义的const。但无法访问界面!
IShellFolder.CreateViewObject(hwndOwner,typeof(IShellView).GUID)返回正确的实例。 但是,当我尝试IShellFolder.CreateViewObject(hwndOwner,typeof(IShellView2).GUID)时,我有异常“指定的强制转换无效”。
如何获取IShellView2接口的对象???
答案 0 :(得分:3)
调用IShellView对象上的QueryInterface方法,询问它是否有IID_IShellView2。