IShellView:如果AutoView未选择“详细信息”,则不会隐藏ColumnHeaders

时间:2012-08-02 11:13:46

标签: windows winapi windows-shell windows-explorer columnheader

我使用带有FVM_AUTO(-1)标志的IShellView实例作为视图模式。这意味着资源管理器应该选择适合所显示文件夹内容的视图样式。 这种方法很好,除了事实上,对于除了Details之外的viewstyle,列标题是可见的,例如缩略图。

IShellView对象和视图窗口的创建方式如下:

ShellFolder1.CreateViewObject(this.Handle, 
                              ref IID_IShellView, 
                              out shellViewObject));
IShellView shellView = shellViewObject as IShellView;
FolderSetting folderSettings = new FolderSetting();
folderSettings.ViewMode = (int)View; // view is FVM_AUTO = -1
folderSetting.FolderFlags = FolderFlags.NoClientEdge
                            | FolderFlags.ExtendedTiles
                            | FolderFlags.AutoArrange
                            // only columnheaders for view mode details
                            | FolderFlags.NoHeaderInAllViews;
shellView.CreateViewWindow(oldView, ref folderSettings, isb, 
                            ref rect, ref m_ShellViewHandle);

可在此处找到可用文件夹标记列表:http://msdn.microsoft.com/en-us/library/bb762508(VS.85).aspx

如何告诉视图应该仅在自动查看模式下为“详细信息”显示列标题?设置FolderFlags.NoColumnHeader不会改变任何内容。

由于

1 个答案:

答案 0 :(得分:0)

此行为似乎是一个错误,并在MS connect

上报告

来自MS支持的其他信息
该文件夹控制视图。传递给CreateViewWindow的值仅仅是建议。在大多数情况下,这些建议都得到了尊重,但技术上允许文件夹忽略它们。

特别是,这种情况会覆盖与Windows XP兼容的建议。如果您使用IShellView3 :: CreateViewWindow3,则此兼容性行为不适用,并且应更好地遵守标志。 您可以使用SV3CVW3_FORCEFOLDERFLAGS标志来强调您的建议。

- >将IShellView3.CreateViewObject3与ForceFolderFlags标志一起使用