У меня есть проект 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() никогда не вызывается