Commit before breaking everything
[matches/honours.git] / research / transmission_spectroscopy / TOF / Win32++ / samples / Explorer / src / ShellWrapper.h
1 //////////////////////////////////////////////////////\r
2 // ShellWrapper.h\r
3 //  Declaration of the CContextMenu, CContextMenu2,\r
4 //    CEnumIDList, Cpidl, and CShellFolder classes\r
5 \r
6 #ifndef SHELLWRAPPER_H\r
7 #define SHELLWRAPPER_H\r
8 \r
9 #include <shlobj.h>\r
10 \r
11 \r
12 //For Visual C++ 6 and without a modern SDK\r
13 #ifndef DWORD_PTR\r
14 #define DWORD_PTR DWORD\r
15 #endif\r
16 \r
17 \r
18 namespace ShellWrapper\r
19 {\r
20 \r
21         //Global functions\r
22         BOOL GetFullFileName(LPCITEMIDLIST pidlFull, LPTSTR pszPathName);\r
23         BOOL GetDisplayName(LPCITEMIDLIST pidlFull, LPTSTR pszDisplayName);\r
24 \r
25         //Wrapper class for a LPITEMIDLIST commonly called a pidl.\r
26         class Cpidl\r
27         {\r
28         friend class CEnumIDList;\r
29         public:\r
30                 Cpidl();\r
31                 Cpidl(const Cpidl& pidlSource);\r
32                 virtual ~Cpidl();\r
33 \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
46                 \r
47                 //a global function declared as friend\r
48                 friend const Cpidl operator+ (const Cpidl& cpidlFull, const Cpidl& cpidlRel);\r
49 \r
50         private:\r
51                 void Attach(LPCITEMIDLIST pidl);\r
52                 UINT GetSize(LPCITEMIDLIST pidl);\r
53                 LPITEMIDLIST GetNextItem(LPCITEMIDLIST pidl) ;\r
54                 void Delete();\r
55 \r
56                 LPITEMIDLIST m_pidl;\r
57                 LPITEMIDLIST m_pidlParent;\r
58                 LPMALLOC m_pMalloc;\r
59         };\r
60 \r
61 \r
62         //Wrapper class for an IContextMenu2 pointer\r
63         class CContextMenu2\r
64         {\r
65         friend class CContextMenu;\r
66         public:\r
67                 CContextMenu2();\r
68                 virtual ~CContextMenu2();\r
69 \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
73                 void Release();\r
74 \r
75         private:\r
76                 IContextMenu2* m_pIContextMenu2;\r
77 \r
78         };\r
79 \r
80         //Wrapper class for an IContextMenu pointer\r
81         class CContextMenu\r
82         {\r
83         friend class CShellFolder;\r
84         public:\r
85                 CContextMenu();\r
86                 virtual ~CContextMenu();\r
87 \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
91 \r
92         private:\r
93                 void Attach(IContextMenu* pContextMenu);\r
94                 IContextMenu* m_pIContextMenu;\r
95         };\r
96 \r
97         //Wrapper class for a LPENUMIDLIST\r
98         class CEnumIDList\r
99         {\r
100         friend class CShellFolder;\r
101         public:\r
102                 CEnumIDList();\r
103                 virtual ~CEnumIDList();\r
104                 virtual HRESULT Next(ULONG Elements, Cpidl& cpidl, ULONG& ulFetched);\r
105 \r
106         private:\r
107                 void Attach(LPENUMIDLIST EnumList);\r
108                 LPENUMIDLIST m_pEnumIDList;\r
109         };\r
110 \r
111 \r
112         //Wrapper class for a LPSHELLFOLDER\r
113         class CShellFolder\r
114         {\r
115         public:\r
116                 CShellFolder();\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
131 \r
132         private:\r
133                 HRESULT AddRef() {return m_IShellFolder->AddRef();}\r
134                 void Attach(LPSHELLFOLDER ShellFolder);\r
135 \r
136                 LPSHELLFOLDER m_IShellFolder;\r
137         }; //class CShellFolder\r
138 \r
139 } //namespace ShellWrapper\r
140 \r
141 #endif  // define SHELLWRAPPER_H\r
142 \r

UCC git Repository :: git.ucc.asn.au