1 //*******************************************************************************
4 // You may use this source code, compile or redistribute it as part of your application
5 // for free. You cannot redistribute it as a part of a software development
6 // library without the agreement of the author. If the sources are
7 // distributed along with the application, you should leave the original
8 // copyright notes in the source code without any changes.
9 // This code can be used WITHOUT ANY WARRANTIES at your own risk.
11 // For the latest updates to this code, check this site:
12 // http://www.masmex.com
15 // Copyright(C) 2000 Philip Oldaker <email: philip@masmex.com>
16 //*******************************************************************************
19 #if !defined(AFX_IMSELECTION_H__BE28E652_2B85_11d1_9B50_006008284B53__INCLUDED_)
20 #define AFX_IMSELECTION_H__BE28E652_2B85_11d1_9B50_006008284B53__INCLUDED_
23 #endif // _MSC_VER >= 1000
26 #ifndef DROPEFFECT_ALL
27 #define DROPEFFECT_ALL DROPEFFECT_COPY | DROPEFFECT_MOVE | DROPEFFECT_LINK
30 //////////////////////////////////////////
31 class CTRL_EXT_CLASS CCF_App : public CObject
34 CCF_App() : m_hWnd(NULL) {};
35 void SetHwnd(HWND hWnd);
37 virtual void Serialize(CArchive &ar);
40 DECLARE_SERIAL(CCF_App)
43 inline void CCF_App::SetHwnd(HWND hWnd)
48 inline HANDLE CCF_App::GetHwnd()
53 //////////////////////////////////////////
54 class CTRL_EXT_CLASS CCF_FolderType : public CObject
57 CCF_FolderType(LPCTSTR pszParentCategory,long nCategory,LPCTSTR pszCategory);
58 CCF_FolderType() { m_nCategory=0; };
61 CCF_FolderType(const CCF_FolderType &WebSite);
62 const CCF_FolderType &operator=(const CCF_FolderType &rThat);
64 virtual void Serialize(CArchive &ar);
66 CString GetParentCategory();
68 CString GetCategoryName();
71 CString m_strParentCategory;
72 CString m_strCategory;
74 DECLARE_SERIAL(CCF_FolderType)
77 inline CString CCF_FolderType::GetParentCategory()
79 return m_strParentCategory;
82 inline long CCF_FolderType::GetCategory()
87 inline CString CCF_FolderType::GetCategoryName()
92 //////////////////////////////////////////
93 class CTRL_EXT_CLASS CCF_ShellIDList : public CObject
97 virtual ~CCF_ShellIDList();
100 virtual void Serialize(CArchive &ar);
101 virtual void AddPidl(LPCITEMIDLIST pidl);
102 virtual LPCITEMIDLIST GetPidl(UINT nIndex) const;
103 virtual UINT GetCount() const;
104 LPCITEMIDLIST operator[](UINT nIndex) const;
106 DECLARE_SERIAL(CCF_ShellIDList)
108 typedef CArray<LPCITEMIDLIST,LPCITEMIDLIST> arItemIDList;
109 arItemIDList m_pidls;
113 //////////////////////////////////////////
114 class CTRL_EXT_CLASS CCF_WebSite : public CObject
118 CCF_WebSite(LPCTSTR pszURL,LPCTSTR pszTitle);
121 CCF_WebSite(const CCF_WebSite &WebSite);
122 const CCF_WebSite &operator=(const CCF_WebSite &rThat);
124 virtual void Serialize(CArchive &ar);
126 virtual LPCTSTR GetURL();
127 virtual LPCTSTR GetTitle();
132 DECLARE_SERIAL(CCF_WebSite)
135 inline LPCTSTR CCF_WebSite::GetURL()
140 inline LPCTSTR CCF_WebSite::GetTitle()
145 class CTRL_EXT_CLASS CCF_DBFolderList : public CList<CCF_FolderType,CCF_FolderType&>
148 CCF_DBFolderList(HWND hWnd=NULL) { m_App.SetHwnd(hWnd); };
149 ~CCF_DBFolderList() {};
150 void SetDatabase(const CString &strDatabase);
151 CString GetDatabase() const;
152 virtual void Serialize(CArchive &ar);
156 CString m_strDatabase;
157 DECLARE_SERIAL(CCF_DBFolderList)
160 inline void CCF_DBFolderList::SetDatabase(const CString &strDatabase)
162 m_strDatabase = strDatabase;
165 inline CString CCF_DBFolderList::GetDatabase() const
167 return m_strDatabase;
170 // template CCF_DBFolderList
171 /////////////////////////////////////
172 template<> void CTRL_EXT_CLASS AFXAPI SerializeElements <CCF_FolderType>(CArchive& ar, CCF_FolderType *pWebSiteCategory, int nCount );
173 template<> void CTRL_EXT_CLASS AFXAPI DestructElements<CCF_FolderType>(CCF_FolderType *pElements, int nCount);
174 template<> void CTRL_EXT_CLASS AFXAPI ConstructElements<CCF_FolderType>(CCF_FolderType *pElements, int nCount);
177 /////////////////////////////////////
178 typedef CList<CCF_WebSite,CCF_WebSite&> CListWebSites;
179 template<> void CTRL_EXT_CLASS AFXAPI SerializeElements <CCF_WebSite>(CArchive& ar, CCF_WebSite *pWebSite, int nCount );
180 template<> void CTRL_EXT_CLASS AFXAPI DestructElements<CCF_WebSite>(CCF_WebSite *pElements, int nCount);
181 template<> void CTRL_EXT_CLASS AFXAPI ConstructElements<CCF_WebSite>(CCF_WebSite *pElements, int nCount);
183 /////////////////////////////////////
184 class CTRL_EXT_CLASS CCF_WebSites : public CObject
187 CCF_WebSites(HWND hWnd=NULL) { m_App.SetHwnd(hWnd); };
189 CListWebSites &GetListWebSites();
190 POSITION GetHeadPosition();
191 CCF_WebSite &GetNext(POSITION &pos);
192 virtual void Serialize(CArchive &ar);
195 CListWebSites m_listWebSites;
196 DECLARE_SERIAL(CCF_WebSites)
199 inline CCF_WebSite &CCF_WebSites::GetNext(POSITION &pos)
201 return m_listWebSites.GetNext(pos);
204 inline POSITION CCF_WebSites::GetHeadPosition()
206 return m_listWebSites.GetHeadPosition();
209 inline CListWebSites &CCF_WebSites::GetListWebSites()
211 return m_listWebSites;
214 //////////////////////////////////////////
215 class CTRL_EXT_CLASS CCF_String : public CObject
219 CCF_String(LPCTSTR pszText);
223 virtual void Serialize(CArchive &ar);
224 virtual LPCTSTR GetString();
225 void SetString(LPCTSTR pszText);
226 DECLARE_SERIAL(CCF_String)
231 class CTRL_EXT_CLASS CCF_RightMenu : public CObject
234 CCF_RightMenu() { m_bRightDrag = false; };
237 void SetRightDrag(bool bRightDrag);
239 virtual void Serialize(CArchive &ar);
240 virtual bool IsRightDrag();
242 DECLARE_SERIAL(CCF_RightMenu)
247 class CTRL_EXT_CLASS CCF_FileGroupDescriptor : public CObject
250 CCF_FileGroupDescriptor();
251 ~CCF_FileGroupDescriptor();
253 CString GetFileName(UINT nItem);
254 CString GetTitle(UINT nItem);
255 void SetTitle(const CString &sTitle);
256 LPFILEDESCRIPTOR GetFileDescriptor(UINT nItem);
258 virtual void Serialize(CArchive &ar);
260 DECLARE_SERIAL(CCF_FileGroupDescriptor)
264 LPFILEDESCRIPTOR m_pFileDescrs;
267 //////////////////////////////////
268 class CTRL_EXT_CLASS CCF_HDROP : public CObject
274 UINT GetCount() { return m_sFileNames.GetSize(); }
275 CString GetFileName(UINT nItem);
276 void AddFileName(LPCTSTR pszFileName);
277 void AddDropPoint(CPoint &pt,BOOL bfNC=FALSE);
279 virtual void Serialize(CArchive &ar);
281 DECLARE_SERIAL(CCF_HDROP)
283 CStringArray m_sFileNames;
289 class CTRL_EXT_CLASS CWDClipboardData : public CObject
308 void SetData(COleDataSource *pDataSource,CObject *pObj,eCBFormats format,LPFORMATETC lpFormatEtc=NULL);
309 bool GetData(COleDataObject *pDataObject,CObject *pObj,eCBFormats format);
310 CLIPFORMAT GetClipboardFormat(eCBFormats format);
311 bool IsDataAvailable(COleDataObject *pDataObject);
312 static CWDClipboardData *Instance();
314 bool IsValidFormat(CLIPFORMAT cfFormat);
316 CLIPFORMAT m_aFormatIDs[e_cfMax];
319 #endif // BE28E652-2B85-11d1-9B50-006008284B53