0

我正在使用带有 FVM_AUTO (-1) 标志的 IShellView 实例作为视图模式。这意味着资源管理器应该选择适合显示文件夹内容的视图样式。这工作得很好,除了这个事实,列标题对于除详细信息以外的视图样式是可见的,例如缩略图。

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 不会改变任何东西。

谢谢

4

1 回答 1

0

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

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

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

--> 使用IShellView3.CreateViewObject3和 ForceFolderFlags 标志

于 2012-08-08T14:33:33.090 回答