GFXOUTBARCTRL.H
上传用户:maryhy001
上传日期:2007-05-02
资源大小:2317k
文件大小:9k
源码类别:

网格计算

开发平台:

Visual C++

  1. // Copyright (c) Iuri Apollonio 1998
  2. // Use & modify as you want & need, and leave those 3 lines.
  3. // http://www.codeguru.com
  4. #if !defined(AFX_GFXOUTBARCTRL_H__28FA2CA4_11B7_11D2_8437_0000B43382FE__INCLUDED_)
  5. #define AFX_GFXOUTBARCTRL_H__28FA2CA4_11B7_11D2_8437_0000B43382FE__INCLUDED_
  6. #if _MSC_VER >= 1000
  7. #pragma once
  8. #endif // _MSC_VER >= 1000
  9. // GfxOutBarCtrl.h : header file
  10. //
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CGfxOutBarCtrl window
  13. #include <afxcoll.h>
  14. #define WM_OUTBAR_NOTIFY WM_USER + 1
  15. #define NM_OB_ITEMCLICK 1
  16. #define NM_OB_ONLABELENDEDIT 2
  17. #define NM_OB_ONGROUPENDEDIT 3
  18. #define NM_OB_DRAGITEM 4
  19. #define NM_FOLDERCHANGE 5
  20. struct OUTBAR_INFO 
  21. {
  22. int index;
  23. const char * cText;
  24. int iDragFrom;
  25. int iDragTo;
  26. };
  27. class CGfxOutBarCtrl : public CWnd
  28. {
  29. // Construction
  30. DECLARE_DYNCREATE(CGfxOutBarCtrl)
  31. public:
  32. CGfxOutBarCtrl();
  33. enum {  fSmallIcon = 1 << 0, fLargeIcon = 1 << 1, fEditGroups = 1 << 2, fEditItems = 1 << 3,
  34. fRemoveGroups = 1 << 4, fRemoveItems = 1 << 5, fAddGroups = 1 << 6, 
  35. fDragItems = 1 << 7, fAnimation = 1 << 8, fSelHighlight = 1 << 9 };
  36. enum { ircIcon = 1, ircLabel = 2, ircAll = 3 };
  37. // Attributes
  38. public:
  39. COLORREF crBackGroundColor, crBackGroundColor1;
  40. COLORREF crTextColor;
  41. COLORREF cr3dFace, crLightBorder, crHilightBorder, crShadowBorder, crDkShadowBorder;
  42. int iFolderHeight;
  43. int xSmallIconLabelOffset, yLargeIconLabelOffset;
  44. int ySmallIconSpacing, yLargeIconSpacing;
  45. int xLeftMargin, yTopMargin;
  46. bool bUpArrow, bDownArrow, bUpPressed, bDownPressed;
  47. CRect rcUpArrow, rcDownArrow;
  48. bool bLooping;
  49. int iHitInternal1, iHitInternal2;
  50. long lAnimationTickCount;
  51. int iLastSel, iSelAnimTiming;
  52. int iSelAnimCount;
  53. DWORD dwFlags;
  54. CPtrArray arFolder;
  55. int iLastFolderHighlighted;
  56. int iLastSelectedFolder;
  57. int iFirstItem;
  58. int iLastItemHighlighted;
  59. bool bPressedHighlight;
  60. int iLastDragItemDraw, iLastDragItemDrawType;
  61. class CBarItem
  62. {
  63. public:
  64. CBarItem(const char * name, const int image, DWORD exData);
  65. virtual  ~CBarItem();
  66. int iImageIndex;
  67. char * cItem;
  68. DWORD dwData;
  69. };
  70. class CBarFolder
  71. {
  72. public:
  73. CBarFolder(const char * name, DWORD exData);
  74. virtual  ~CBarFolder();
  75. int GetItemCount();
  76. int InsertItem(int index, const char * text, const int image, const DWORD exData);
  77. char * cName;
  78. DWORD dwData;
  79. CImageList * pLargeImageList;
  80. CImageList * pSmallImageList;
  81. CPtrArray arItems;
  82. CWnd * pChild;
  83. };
  84. int iSelFolder;
  85. CImageList * pLargeImageList;
  86. CImageList * pSmallImageList;
  87. HCURSOR hHandCursor;
  88. HCURSOR hDragCursor;
  89. HCURSOR hNoDragCursor;
  90. CPen * pBlackPen;
  91. //设置删除目录时是否提示用户操作
  92. bool bIsQueryRemove;
  93. // Operations
  94. public:
  95. enum { htNothing = -1, htFolder, htItem, htUpScroll, htDownScroll};
  96. // Overrides
  97. // ClassWizard generated virtual function overrides
  98. //{{AFX_VIRTUAL(CGfxOutBarCtrl)
  99. //}}AFX_VIRTUAL
  100. // Implementation
  101. public:
  102. void DrawAnimItem(const int xoffset, const int yoffset, const int index);
  103. void SetAnimSelHighlight(const int iTime);
  104. DWORD GetFolderData(int iFolder = -1);
  105. CWnd * GetFolderChild(int iFolder = -1);
  106. int AddFolderBar(const char * pFolder, CWnd * pSon, const DWORD exData = 0);
  107. CString GetItemText(const int index);
  108. //////////////////////////////////////////////////////////////////////////
  109. CString GetFolderItemText(const int nFolderIndex, const int itemindex);
  110. //////////////////////////////////////////////////////////////////////////
  111. void SetAnimationTickCount(const long value) { lAnimationTickCount = value; };
  112. long GetAnimationTickCount() { return lAnimationTickCount; };
  113. void AnimateFolderScroll(const int iFrom, const int iTo);
  114. int GetDragItemRect(const int index, CRect &rect);
  115. void DrawDragArrow(CDC * pDC, const int iFrom, const int iTo);
  116. void SetItemImage(const int index, const int iImage);
  117. //////////////////////////////////////////////////////////////////////////
  118. void SetFolderItemImage(const int nFolderIndex, const int itemindex, const int iImage);
  119. //////////////////////////////////////////////////////////////////////////
  120. void SetItemData(const int index, const DWORD dwData);
  121. //////////////////////////////////////////////////////////////////////////
  122. void SetFolderItemData(const int nFolderIndex, const int itemindex, const DWORD dwData);
  123. //////////////////////////////////////////////////////////////////////////
  124. int  GetItemImage(const int index) const;
  125. int  GetFolderItemImage(const int nFolderIndex, const int itemindex);
  126. DWORD GetItemData(const int index) const;
  127. DWORD GetFolderItemData(const int nFolderIndex, const int itemindex);
  128. bool IsValidItem(const int index) const;
  129. //////////////////////////////////////////////////////////////////////////
  130. bool IsValidFolderItem(const int nFolderIndex, const int index) const;
  131. //////////////////////////////////////////////////////////////////////////
  132. void RemoveItem(const int index);
  133. //////////////////////////////////////////////////////////////////////////
  134. void RemoveFolderItem(const int nFolderIndex, const int itemindex);
  135. //////////////////////////////////////////////////////////////////////////
  136. void SetItemText(const int index, const char * text);
  137. void StartItemEdit(const int index);
  138. void SetFolderText(const int index, const char * text);
  139. void StartGroupEdit(const int index);
  140. void GetLabelRect(const int iFolder, const int iIndex, CRect &rect);
  141. void GetIconRect(const int iFolder, const int iIndex, CRect &rect);
  142. void HighlightItem(const int index, const bool bPressed = false);
  143. void GetVisibleRange(const int iFolder, int &first, int &last);
  144. void DrawItem(CDC * pDC, const int iFolder, CRect rc, const int index, const bool bOnlyImage = false);
  145. CImageList * GetFolderImageList(const int index, const bool bSmall) const;
  146. CSize GetItemSize(const int iFolder, const int index, const int type);
  147. void PaintItems(CDC * pDC, const int iFolder, CRect rc);
  148. CImageList * GetImageList(CImageList * pImageList, int nImageList);
  149. CImageList * SetFolderImageList(const int folder, CImageList * pImageList, int nImageList);
  150. CImageList * SetImageList(CImageList * pImageList, int nImageList);
  151. int GetCountPerPage() const;
  152. //
  153. void SetIfQueryRemove(bool bIfQuery = true){bIsQueryRemove = bIfQuery;};
  154. bool GetIfQueryRemove(){return bIsQueryRemove;};
  155. void RemoveFolder(const int index);
  156. //
  157. int GetSelFolder() const;
  158. int GetFolderCount() const;
  159. void SetSelFolder(const int index);
  160. int GetItemCount() const;
  161. //added by lixiaofei at 2004-11-21.
  162. int GetFolderItemCount(const int index) const;
  163. int InsertItem(const int folder, const int index, const char * text, const int image = -1, const DWORD exData = 0);
  164. void HighlightFolder(const int index);
  165. int HitTestEx(const CPoint &point, int &index);
  166. void GetInsideRect(CRect &rect) const;
  167. int AddFolder(const char * cFolderName, const DWORD exData);
  168. void GetItemRect(const int iFolder, const int iIndex, CRect &rect);
  169. bool GetFolderRect(const int iIndex, CRect &rect) const;
  170. void ModifyFlag(const DWORD &dwRemove, const DWORD &dwAdd, const UINT redraw = 0);
  171. DWORD GetFlag() const;
  172. void SetSmallIconView(const bool bSet);
  173. bool IsSmallIconView() const;
  174. BOOL Create(DWORD dwStyle, const RECT& rect, CWnd * pParentWnd, UINT nID, const DWORD dwFlag = fDragItems|fEditGroups|fEditItems|fRemoveGroups|fRemoveItems|fAddGroups|fAnimation|fSelHighlight);
  175. virtual ~CGfxOutBarCtrl();
  176. // Generated message map functions
  177. protected:
  178. void DrawFolder(CDC * pDC, const int iIdx, CRect rect, const bool bSelected);
  179. //{{AFX_MSG(CGfxOutBarCtrl)
  180. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  181. afx_msg void OnTimer(UINT nIDEvent);
  182. afx_msg void OnPaint();
  183. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  184. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  185. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  186. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  187. afx_msg void OnSize(UINT nType, int cx, int cy);
  188. afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
  189. afx_msg void OnGfxLargeicon();
  190. afx_msg void OnUpdateGfxLargeicon(CCmdUI* pCmdUI);
  191. afx_msg void OnGfxSmallicon();
  192. afx_msg void OnUpdateGfxSmallicon(CCmdUI* pCmdUI);
  193. afx_msg void OnGfxRemoveitem();
  194. afx_msg void OnUpdateGfxRemoveitem(CCmdUI* pCmdUI);
  195. afx_msg void OnGfxRenameitem();
  196. afx_msg void OnUpdateGfxRenameitem(CCmdUI* pCmdUI);
  197. //}}AFX_MSG
  198. afx_msg long OnEndLabelEdit(WPARAM wParam, LPARAM lParam);
  199. DECLARE_MESSAGE_MAP()
  200. };
  201. /////////////////////////////////////////////////////////////////////////////
  202. //{{AFX_INSERT_LOCATION}}
  203. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.
  204. #endif // !defined(AFX_GFXOUTBARCTRL_H__28FA2CA4_11B7_11D2_8437_0000B43382FE__INCLUDED_)