实现Windows资源管理器扩展视图界面
我有一个Visual Studio 2008 C++ ATL项目,它是Windows资源管理器的命名空间扩展。实现Windows资源管理器扩展视图界面
在Windows XP中Windows资源管理器的工具栏螺纹钢中,有一个标有“视图”的图标。在普通视图中,它会创建一个允许用户选择“缩略图”,“瓦片”,“图标”,“列表”或“细节”作为视图类型的下拉菜单。
我需要在我的项目中为此按钮实现什么接口?目前,我实现了IShellFolder和IShellView。当我在我的命名空间中单击“视图”按钮时,没有任何反应。没有菜单显示,用户也没有改变视图的选项。
感谢, PaulH
编辑:这是我的实现IShellView,IServiceProvider的,和IFolderView
class ATL_NO_VTABLE CShellViewImpl :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass< CShellViewImpl, &CLSID_ShellViewImpl >,
public IDispatchImpl< IShellViewImpl,
&IID_IShellViewImpl,
&LIBID_MyLib,
/*wMajor =*/ 1,
/*wMinor =*/ 0 >,
public IShellView,
public IServiceProvider,
public IFolderView
{
public:
DECLARE_REGISTRY_RESOURCEID(IDR_SHELLVIEWIMPL)
BEGIN_COM_MAP(CShellViewImpl)
COM_INTERFACE_ENTRY(IShellViewImpl)
COM_INTERFACE_ENTRY(IServiceProvider)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IShellView)
COM_INTERFACE_ENTRY(IFolderView)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
// IXYZ implementations...
};
的IServiceProvider :: QueryService的()是从来没有所谓的
尝试IFolderView :: SetCurrentViewMode
我已经实现了IFolderView,但即使当我点击资源管理器“查看”按钮时,也不会调用它的任何函数。这可能是我错误地实现了它。它是否需要项目.rgs文件中的任何其他注册表项?有没有链接到我可以看到的工作实现的例子? – PaulH 2010-06-22 14:49:12
我认为你需要实现IServiceProvider并且响应SID_SFolderView – 2010-06-22 17:30:42
Jiang - 请参阅我的编辑。我按照你的建议实现了'IServiceProvider',但是'QueryService()'永远不会被调用。 – PaulH 2010-06-22 17:41:31
find here,sample to帮助你:[一体式代码框架示例目录](http://1code.codeplex.com/wikipage?title=All-In-One%20Code%20Framework%20Sample%20Catalog) – lsalamon 2010-07-01 13:34:01