2010-06-21 3 views
2

Windows 탐색기의 네임 스페이스 확장명 인 Visual Studio 2008 C++ ATL 프로젝트가 있습니다.Windows 탐색기 확장보기 인터페이스 구현

Windows XP의 Windows 탐색기에 대한 도구 모음 보강 철근에는 "보기"라는 아이콘이 있습니다. 일반보기에서는보기 유형으로 "축소판", "타일", "아이콘", "목록"또는 "세부 사항"을 선택할 수있는 드롭 다운 메뉴를 만듭니다.

이 버튼에 대해 프로젝트에서 구현해야하는 인터페이스는 무엇입니까? 현재 IShellFolder와 IShellView를 구현하고 있습니다. 내 네임 스페이스에서 '보기'버튼을 클릭해도 아무런 변화가 없습니다. 메뉴가 표시되지 않으며 사용자에게보기를 변경할 수있는 옵션이 제공되지 않습니다.

감사합니다, PaulH


편집 :이

+0

여기서 샘플을 찾으십시오. 도와주세요 : [올인원 코드 프레임 워크 샘플 카탈로그] (http://1code.codeplex.com/wikipage?title=All-In-One%20Code%20Framework%20Sample%20Catalog) – lsalamon

답변

0

해보십시오 IFolderView 호출되지 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()의 내 구현 :: SetCurrentViewMode

+0

IFolderView를 구현했습니다. Explorer의 "보기"버튼을 클릭해도 아무 함수도 호출되지 않습니다. 그것은 그것을 잘못 구현했을 가능성이 있습니다. 프로젝트 .rgs 파일에 추가 레지스트리 항목이 필요합니까? 내가 볼 수있는 작업 구현의 예에 대한 링크가 있습니까? – PaulH

+0

IServiceProvider를 구현하고 SID_SFolderView에 응답해야한다고 생각합니다. –

+0

Jiang - 내 편집을 참조하십시오. 제안한대로'IServiceProvider'를 구현했지만 QueryService()는 결코 호출되지 않습니다. – PaulH