【发布时间】:2011-03-06 13:21:26
【问题描述】:
我有一个 Visual Studio 2008 C++ ATL 项目,它是 Windows 资源管理器的命名空间扩展。
在 Windows XP 的 Windows 资源管理器工具栏中,有一个标有“视图”的图标。在普通视图中,它会创建一个下拉菜单,允许用户选择“缩略图”、“平铺”、“图标”、“列表”或“详细信息”作为视图类型。
我需要在我的项目中为这个按钮实现什么接口?目前我实现了IShellFolder和IShellView。当我在我的命名空间中单击“视图”按钮时,什么也没有发生。没有显示菜单,也没有为用户提供更改视图的选项。
谢谢, 保罗H
编辑:这是我对 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() 永远不会被调用
【问题讨论】:
-
在这里找到,帮助您的示例:All-In-One Code Framework Sample Catalog
标签: c++ com atl windows-shell