cbformats.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:8k
源码类别:

图形图象

开发平台:

Visual C++

  1. //*******************************************************************************
  2. // COPYRIGHT NOTES
  3. // ---------------
  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.
  10. // 
  11. // For the latest updates to this code, check this site:
  12. // http://www.masmex.com 
  13. // after Sept 2000
  14. // 
  15. // Copyright(C) 2000 Philip Oldaker <email: philip@masmex.com>
  16. //*******************************************************************************
  17. #if !defined(AFX_IMSELECTION_H__BE28E652_2B85_11d1_9B50_006008284B53__INCLUDED_)
  18. #define AFX_IMSELECTION_H__BE28E652_2B85_11d1_9B50_006008284B53__INCLUDED_
  19. #if _MSC_VER >= 1000
  20. #pragma once
  21. #endif // _MSC_VER >= 1000
  22. #ifndef DROPEFFECT_ALL
  23. #define DROPEFFECT_ALL DROPEFFECT_COPY | DROPEFFECT_MOVE | DROPEFFECT_LINK
  24. #endif
  25. //////////////////////////////////////////
  26. class CTRL_EXT_CLASS CCF_App : public CObject
  27. {
  28. public:
  29. CCF_App() : m_hWnd(NULL) {};
  30. void SetHwnd(HWND hWnd);
  31. HANDLE GetHwnd();
  32. virtual void Serialize(CArchive &ar);
  33. private:
  34. HWND m_hWnd;
  35. DECLARE_SERIAL(CCF_App)
  36. };
  37. inline void CCF_App::SetHwnd(HWND hWnd)
  38. {
  39. m_hWnd = hWnd;
  40. }
  41. inline HANDLE CCF_App::GetHwnd()
  42. {
  43. return m_hWnd;
  44. }
  45. //////////////////////////////////////////
  46. class CTRL_EXT_CLASS CCF_FolderType : public CObject
  47. {
  48. public:
  49. CCF_FolderType(LPCTSTR pszParentCategory,long nCategory,LPCTSTR pszCategory);
  50. CCF_FolderType() { m_nCategory=0; };
  51. ~CCF_FolderType();
  52. public:
  53. CCF_FolderType(const CCF_FolderType &WebSite);
  54. const CCF_FolderType &operator=(const CCF_FolderType &rThat);
  55. // virtual
  56. virtual void Serialize(CArchive &ar);
  57. // inline
  58. CString GetParentCategory();
  59. long GetCategory();
  60. CString GetCategoryName();
  61. protected:
  62. long m_nCategory;
  63. CString m_strParentCategory;
  64. CString m_strCategory;
  65. DECLARE_SERIAL(CCF_FolderType)
  66. };
  67. inline CString CCF_FolderType::GetParentCategory()
  68. {
  69. return m_strParentCategory;
  70. }
  71. inline long CCF_FolderType::GetCategory()
  72. {
  73. return m_nCategory;
  74. }
  75. inline CString CCF_FolderType::GetCategoryName()
  76. {
  77. return m_strCategory;
  78. }
  79. //////////////////////////////////////////
  80. class CTRL_EXT_CLASS CCF_ShellIDList : public CObject
  81. {
  82. public:
  83. CCF_ShellIDList();
  84. virtual ~CCF_ShellIDList();
  85. public:
  86. // virtual
  87. virtual void Serialize(CArchive &ar);
  88. virtual void AddPidl(LPCITEMIDLIST pidl);
  89. virtual LPCITEMIDLIST GetPidl(UINT nIndex) const;
  90. virtual UINT GetCount() const;
  91. LPCITEMIDLIST operator[](UINT nIndex) const;
  92. protected:
  93. DECLARE_SERIAL(CCF_ShellIDList)
  94. private:
  95. typedef CArray<LPCITEMIDLIST,LPCITEMIDLIST> arItemIDList;
  96. arItemIDList m_pidls;
  97. };
  98. //////////////////////////////////////////
  99. class CTRL_EXT_CLASS CCF_WebSite : public CObject
  100. {
  101. public:
  102. CCF_WebSite() {};
  103. CCF_WebSite(LPCTSTR pszURL,LPCTSTR pszTitle);
  104. ~CCF_WebSite();
  105. public:
  106. CCF_WebSite(const CCF_WebSite &WebSite);
  107. const CCF_WebSite &operator=(const CCF_WebSite &rThat);
  108. // virtual
  109. virtual void Serialize(CArchive &ar);
  110. // inline
  111. virtual LPCTSTR GetURL();
  112. virtual LPCTSTR GetTitle();
  113. protected:
  114. CString m_strURL;
  115. CString m_strTitle;
  116. //
  117. DECLARE_SERIAL(CCF_WebSite)
  118. };
  119. inline LPCTSTR CCF_WebSite::GetURL()
  120. {
  121. return m_strURL;
  122. }
  123. inline LPCTSTR CCF_WebSite::GetTitle()
  124. {
  125. return m_strTitle;
  126. }
  127. class CTRL_EXT_CLASS CCF_DBFolderList : public CList<CCF_FolderType,CCF_FolderType&>
  128. {
  129. public:
  130. CCF_DBFolderList(HWND hWnd=NULL) { m_App.SetHwnd(hWnd); };
  131. ~CCF_DBFolderList() {};
  132. void SetDatabase(const CString &strDatabase);
  133. CString GetDatabase() const;
  134. virtual void Serialize(CArchive &ar);
  135. public:
  136. CCF_App m_App;
  137. protected:
  138. CString m_strDatabase;
  139. DECLARE_SERIAL(CCF_DBFolderList)
  140. };
  141. inline void CCF_DBFolderList::SetDatabase(const CString &strDatabase)
  142. {
  143. m_strDatabase = strDatabase;
  144. }
  145. inline CString CCF_DBFolderList::GetDatabase() const
  146. {
  147. return m_strDatabase;
  148. }
  149. // template CCF_DBFolderList
  150. /////////////////////////////////////
  151. template<> void CTRL_EXT_CLASS AFXAPI SerializeElements <CCF_FolderType>(CArchive& ar, CCF_FolderType *pWebSiteCategory, int nCount );
  152. template<> void CTRL_EXT_CLASS AFXAPI DestructElements<CCF_FolderType>(CCF_FolderType *pElements, int nCount);
  153. template<> void CTRL_EXT_CLASS AFXAPI ConstructElements<CCF_FolderType>(CCF_FolderType *pElements, int nCount);
  154. // template CList
  155. /////////////////////////////////////
  156. typedef CList<CCF_WebSite,CCF_WebSite&> CListWebSites;
  157. template<> void CTRL_EXT_CLASS AFXAPI SerializeElements <CCF_WebSite>(CArchive& ar, CCF_WebSite *pWebSite, int nCount );
  158. template<> void CTRL_EXT_CLASS AFXAPI DestructElements<CCF_WebSite>(CCF_WebSite *pElements, int nCount);
  159. template<> void CTRL_EXT_CLASS AFXAPI ConstructElements<CCF_WebSite>(CCF_WebSite *pElements, int nCount);
  160. /////////////////////////////////////
  161. class CTRL_EXT_CLASS CCF_WebSites : public CObject
  162. {
  163. public:
  164. CCF_WebSites(HWND hWnd=NULL) { m_App.SetHwnd(hWnd); };
  165. ~CCF_WebSites() {};
  166. CListWebSites &GetListWebSites();
  167. POSITION GetHeadPosition();
  168. CCF_WebSite &GetNext(POSITION &pos);
  169. virtual void Serialize(CArchive &ar);
  170. protected:
  171. CCF_App m_App;
  172. CListWebSites m_listWebSites;
  173. DECLARE_SERIAL(CCF_WebSites)
  174. };
  175. inline CCF_WebSite &CCF_WebSites::GetNext(POSITION &pos)
  176. {
  177. return m_listWebSites.GetNext(pos);
  178. }
  179. inline POSITION CCF_WebSites::GetHeadPosition()
  180. {
  181. return m_listWebSites.GetHeadPosition();
  182. }
  183. inline CListWebSites &CCF_WebSites::GetListWebSites()
  184. {
  185. return m_listWebSites;
  186. }
  187. //////////////////////////////////////////
  188. class CTRL_EXT_CLASS CCF_String : public CObject
  189. {
  190. public:
  191. CCF_String() {};
  192. CCF_String(LPCTSTR pszText);
  193. ~CCF_String();
  194. public:
  195. // virtual
  196. virtual void Serialize(CArchive &ar);
  197. virtual LPCTSTR GetString();
  198. void SetString(LPCTSTR pszText);
  199. DECLARE_SERIAL(CCF_String)
  200. private:
  201. CString m_sText;
  202. };
  203. class CTRL_EXT_CLASS CCF_RightMenu : public CObject
  204. {
  205. public:
  206. CCF_RightMenu() { m_bRightDrag = false; };
  207. ~CCF_RightMenu() {};
  208. public:
  209. void SetRightDrag(bool bRightDrag);
  210. // virtual
  211. virtual void Serialize(CArchive &ar);
  212. virtual bool IsRightDrag();
  213. DECLARE_SERIAL(CCF_RightMenu)
  214. private:
  215. bool m_bRightDrag;
  216. };
  217. class CTRL_EXT_CLASS CCF_FileGroupDescriptor : public CObject
  218. {
  219. public:
  220. CCF_FileGroupDescriptor();
  221. ~CCF_FileGroupDescriptor();
  222. public:
  223. CString GetFileName(UINT nItem);
  224. CString GetTitle(UINT nItem);
  225. void SetTitle(const CString &sTitle);
  226. LPFILEDESCRIPTOR GetFileDescriptor(UINT nItem);
  227. // virtual
  228. virtual void Serialize(CArchive &ar);
  229. DECLARE_SERIAL(CCF_FileGroupDescriptor)
  230. private:
  231. CString m_sTitle;
  232. UINT m_nItems;
  233. LPFILEDESCRIPTOR m_pFileDescrs;
  234. };
  235. //////////////////////////////////
  236. class CTRL_EXT_CLASS CCF_HDROP : public CObject
  237. {
  238. public:
  239. CCF_HDROP();
  240. ~CCF_HDROP();
  241. public:
  242. UINT GetCount() { return m_sFileNames.GetSize(); }
  243. CString GetFileName(UINT nItem);
  244. void AddFileName(LPCTSTR pszFileName);
  245. void AddDropPoint(CPoint &pt,BOOL bfNC=FALSE);
  246. // virtual
  247. virtual void Serialize(CArchive &ar);
  248. DECLARE_SERIAL(CCF_HDROP)
  249. private:
  250. CStringArray m_sFileNames;
  251. int m_nFiles;
  252. CPoint m_pt;
  253. BOOL m_fNC;
  254. };
  255. class CTRL_EXT_CLASS CWDClipboardData : public CObject
  256. {
  257. public:
  258. enum eCBFormats
  259. {
  260. e_cfString,
  261. e_cfHDROP,
  262. e_cfWebSiteURL,
  263. e_cfWebSite,
  264. e_cfHTMLFormat,
  265. e_cfFolder,
  266. e_cfRightMenu,
  267. e_cfFileGroupDesc,
  268. e_cfShellIDList,
  269. e_cfMax
  270. };
  271. CWDClipboardData();
  272. ~CWDClipboardData();
  273. public:
  274. void SetData(COleDataSource *pDataSource,CObject *pObj,eCBFormats format,LPFORMATETC lpFormatEtc=NULL);
  275. bool GetData(COleDataObject *pDataObject,CObject *pObj,eCBFormats format);
  276. CLIPFORMAT GetClipboardFormat(eCBFormats format);
  277. bool IsDataAvailable(COleDataObject *pDataObject);
  278. static CWDClipboardData *Instance();
  279. protected:
  280. bool IsValidFormat(CLIPFORMAT cfFormat);
  281. private:
  282. CLIPFORMAT m_aFormatIDs[e_cfMax];
  283. };
  284. #endif // BE28E652-2B85-11d1-9B50-006008284B53