/************************************************************************** THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. Copyright 1998 Microsoft Corporation. All Rights Reserved. **************************************************************************/ /************************************************************************** File: ShlFldr.h Description: CShellFolder definitions. **************************************************************************/ #ifndef SHELLFOLDER_H #define SHELLFOLDER_H /************************************************************************** #include statements **************************************************************************/ #include #include #include "EnumIDL.h" #include "PidlMgr.h" /************************************************************************** CShellFolder class definition **************************************************************************/ class CShellFolder : public IShellFolder, public IPersistFolder { friend class CShellView; friend class CContextMenu; friend class CDropTarget; friend class CDataObject; private: DWORD m_ObjRefCount; LPITEMIDLIST m_pidlRel; LPITEMIDLIST m_pidlFQ; CShellFolder *m_psfParent; LPMALLOC m_pMalloc; CPidlMgr *m_pPidlMgr; IXMLDocument *m_pXMLDoc; public: CShellFolder(CShellFolder *pParent = NULL, LPCITEMIDLIST pidl = NULL); ~CShellFolder(); //IUnknown methods STDMETHOD (QueryInterface) (REFIID riid, LPVOID * ppvObj); STDMETHOD_ (ULONG, AddRef) (VOID); STDMETHOD_ (ULONG, Release) (VOID); //IShellFolder methods STDMETHOD (ParseDisplayName) (HWND, LPBC, LPOLESTR, LPDWORD, LPITEMIDLIST*, LPDWORD); STDMETHOD (EnumObjects) (HWND, DWORD, LPENUMIDLIST*); STDMETHOD (BindToObject) (LPCITEMIDLIST, LPBC, REFIID, LPVOID*); STDMETHOD (BindToStorage) (LPCITEMIDLIST, LPBC, REFIID, LPVOID*); STDMETHOD (CompareIDs) (LPARAM, LPCITEMIDLIST, LPCITEMIDLIST); STDMETHOD (CreateViewObject) (HWND, REFIID, LPVOID* ); STDMETHOD (GetAttributesOf) (UINT, LPCITEMIDLIST*, LPDWORD); STDMETHOD (GetUIObjectOf) (HWND, UINT, LPCITEMIDLIST*, REFIID, LPUINT, LPVOID*); STDMETHOD (GetDisplayNameOf) (LPCITEMIDLIST, DWORD, LPSTRRET); STDMETHOD (SetNameOf) (HWND, LPCITEMIDLIST, LPCOLESTR, DWORD, LPITEMIDLIST*); //IPersist methods STDMETHODIMP GetClassID(LPCLSID); //IPersistFolder methods STDMETHODIMP Initialize(LPCITEMIDLIST); private: STDMETHOD (AddFolder)(LPCTSTR, LPITEMIDLIST*); STDMETHOD (AddItem)(LPCTSTR, LPCTSTR, LPITEMIDLIST*); STDMETHOD (SetItemData)(LPCITEMIDLIST, LPCTSTR); STDMETHOD (GetUniqueName)(BOOL, LPTSTR, DWORD); LPITEMIDLIST CreateFQPidl(LPCITEMIDLIST); STDMETHOD (DeleteItems)(LPITEMIDLIST*, UINT); STDMETHOD (CopyItems)(CShellFolder*, LPITEMIDLIST*, UINT); VOID GetFullName(LPCITEMIDLIST, LPTSTR, DWORD); VOID GetPath(LPCITEMIDLIST, LPTSTR, DWORD); BOOL HasSubFolder(LPCITEMIDLIST); VOID NotifyViews(DWORD, LPCITEMIDLIST, LPCITEMIDLIST); STDMETHOD (CompareItems) (LPCITEMIDLIST, LPCITEMIDLIST); }; #endif //SHELLFOLDER_H