Реализация интерфейса представления расширений Windows Explorer - PullRequest
2 голосов
/ 22 июня 2010

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

1 Ответ

0 голосов
/ 22 июня 2010

Попробуйте IFolderView :: SetCurrentViewMode

...