1 //////////////////////////////////////////////////////
\r
3 // Declaration of the CContextMenu, CContextMenu2,
\r
4 // CEnumIDList, Cpidl, and CShellFolder classes
\r
6 #ifndef SHELLWRAPPER_H
\r
7 #define SHELLWRAPPER_H
\r
12 //For Visual C++ 6 and without a modern SDK
\r
14 #define DWORD_PTR DWORD
\r
18 namespace ShellWrapper
\r
22 BOOL GetFullFileName(LPCITEMIDLIST pidlFull, LPTSTR pszPathName);
\r
23 BOOL GetDisplayName(LPCITEMIDLIST pidlFull, LPTSTR pszDisplayName);
\r
25 //Wrapper class for a LPITEMIDLIST commonly called a pidl.
\r
28 friend class CEnumIDList;
\r
31 Cpidl(const Cpidl& pidlSource);
\r
34 virtual HRESULT SHGetSpecialFolderLocation(HWND hwnd, int csidl);
\r
35 virtual DWORD_PTR SHGetFileInfo(DWORD dwFileAttributes, SHFILEINFO& sfi, UINT uFlags);
\r
36 virtual void Copy(const Cpidl & cpidlSource);
\r
37 virtual void Copy(LPCITEMIDLIST pidlSource);
\r
38 virtual void Concatenate(const Cpidl& cpidlParent, const Cpidl& cpidlRel);
\r
39 virtual void Concatenate(LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidlRel);
\r
40 virtual LPITEMIDLIST GetParent();
\r
41 virtual LPITEMIDLIST GetPidl() const {return m_pidl;}
\r
42 virtual LPITEMIDLIST GetRelative();
\r
43 virtual BOOL IsEqual(const Cpidl &cpidl);
\r
44 void operator= (const Cpidl& cpidlSource);
\r
45 BOOL operator== (const Cpidl& cpidl);
\r
47 //a global function declared as friend
\r
48 friend const Cpidl operator+ (const Cpidl& cpidlFull, const Cpidl& cpidlRel);
\r
51 void Attach(LPCITEMIDLIST pidl);
\r
52 UINT GetSize(LPCITEMIDLIST pidl);
\r
53 LPITEMIDLIST GetNextItem(LPCITEMIDLIST pidl) ;
\r
56 LPITEMIDLIST m_pidl;
\r
57 LPITEMIDLIST m_pidlParent;
\r
62 //Wrapper class for an IContextMenu2 pointer
\r
65 friend class CContextMenu;
\r
68 virtual ~CContextMenu2();
\r
70 void Attach(IContextMenu2* pIContextMenu2);
\r
71 virtual HRESULT HandleMenuMsg(UINT uMsg, WPARAM wParam, LPARAM lParam);
\r
72 virtual IContextMenu2* GetIContextMenu2() {return m_pIContextMenu2;}
\r
76 IContextMenu2* m_pIContextMenu2;
\r
80 //Wrapper class for an IContextMenu pointer
\r
83 friend class CShellFolder;
\r
86 virtual ~CContextMenu();
\r
88 virtual HRESULT InvokeCommand(CMINVOKECOMMANDINFO& Ici);
\r
89 virtual HRESULT QueryInterface(REFIID iid, CContextMenu2& cm2);
\r
90 virtual HRESULT QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
\r
93 void Attach(IContextMenu* pContextMenu);
\r
94 IContextMenu* m_pIContextMenu;
\r
97 //Wrapper class for a LPENUMIDLIST
\r
100 friend class CShellFolder;
\r
103 virtual ~CEnumIDList();
\r
104 virtual HRESULT Next(ULONG Elements, Cpidl& cpidl, ULONG& ulFetched);
\r
107 void Attach(LPENUMIDLIST EnumList);
\r
108 LPENUMIDLIST m_pEnumIDList;
\r
112 //Wrapper class for a LPSHELLFOLDER
\r
117 CShellFolder(const CShellFolder& csfSource);
\r
118 void operator=(const CShellFolder& csfSource);
\r
119 virtual ~CShellFolder();
\r
120 virtual void Delete();
\r
121 virtual HRESULT BindToObject(const Cpidl& pidl, LPBC pbc, REFIID riid, CShellFolder& NewFolder);
\r
122 virtual HRESULT CompareIDs(LPARAM lParam, const Cpidl& cpidl1, const Cpidl& cpidl2);
\r
123 virtual void Copy(const CShellFolder& Source);
\r
124 virtual void Copy(LPSHELLFOLDER Source);
\r
125 virtual HRESULT CreateViewObject(HWND hwnd, REFIID riid, CContextMenu& ccm);
\r
126 virtual HRESULT EnumObjects(HWND hwndOwner, int grfFlags, CEnumIDList& cenumIDList);
\r
127 virtual HRESULT GetAttributesOf(UINT cidl, const Cpidl& cpidl, ULONG& rgfInOut);
\r
128 virtual HRESULT SHGetDesktopFolder();
\r
129 virtual HRESULT GetUIObjectOf(HWND hwndOwner, UINT nItems, Cpidl* cpidlArray, REFIID riid, UINT rgfReserved, CContextMenu& cm);
\r
130 virtual LPSHELLFOLDER GetIShellFolder() {return m_IShellFolder;}
\r
133 HRESULT AddRef() {return m_IShellFolder->AddRef();}
\r
134 void Attach(LPSHELLFOLDER ShellFolder);
\r
136 LPSHELLFOLDER m_IShellFolder;
\r
137 }; //class CShellFolder
\r
139 } //namespace ShellWrapper
\r
141 #endif // define SHELLWRAPPER_H
\r