У меня есть проект Visual Studio 2008 C ++ ATL, который является расширением пространства имен для проводника Windows.
На панели инструментов панели инструментов Проводника Windows в Windows XP есть значок с надписью «Представления». В обычном режиме он создает раскрывающееся меню, в котором пользователь может выбрать «Эскизы», «Плитки», «Значки», «Список» или «Детали» в качестве типа представления.
Какой интерфейс мне нужно реализовать в моем проекте для этой кнопки? В настоящее время я реализую 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 () никогда не вызывается