SkinListCtrl.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #ifndef SKIN_LISTCTRL_HEAD_FILE
  2. #define SKIN_LISTCTRL_HEAD_FILE
  3. #pragma once
  4. #include "SkinUI.h"
  5. #include "ISkinControl.h"
  6. //////////////////////////////////////////////////////////////////////////////////
  7. //排序位置
  8. #define SORT_AFTER 1 //后面位置
  9. #define SORT_FRONT -1 //前面位置
  10. //////////////////////////////////////////////////////////////////////////////////
  11. //枚举定义
  12. //排序类型
  13. enum enSortType
  14. {
  15. SortType_NoSort, //没有排序
  16. SortType_Ascend, //升序排序
  17. SortType_Descale, //降序排序
  18. };
  19. //////////////////////////////////////////////////////////////////////////////////
  20. //列头控件
  21. class SKINUI_CLASS CSkinHeaderCtrl : public CHeaderCtrl,public ISkinControl
  22. {
  23. //锁定列表
  24. protected:
  25. UINT m_uLockCount; //锁定数目
  26. UINT m_uItemHeight; //子项高度
  27. UINT m_uActiveItem; //
  28. bool m_bPress;
  29. //资源定义
  30. public:
  31. CImageEx * m_pBackImg, * m_pPressImg, *m_pGridImg;
  32. //函数定义
  33. public:
  34. //构造函数
  35. CSkinHeaderCtrl();
  36. //析构函数
  37. virtual ~CSkinHeaderCtrl();
  38. //资源加载
  39. public:
  40. //设置资源
  41. BOOL SetBackImage(LPCTSTR lpNormal,CONST LPRECT lprcNinePart=NULL);
  42. //设置资源
  43. BOOL SetPressImage(LPCTSTR lpNormal,CONST LPRECT lprcNinePart=NULL);
  44. //设置资源
  45. BOOL SetGridImage(LPCTSTR lpNormal);
  46. //重载函数
  47. public:
  48. //控件绑定
  49. virtual VOID PreSubclassWindow();
  50. //控件消息
  51. virtual BOOL OnChildNotify(UINT uMessage, WPARAM wParam, LPARAM lParam, LRESULT * pLResult);
  52. //功能函数
  53. public:
  54. //设置锁定
  55. VOID SetLockCount(UINT uLockCount);
  56. //设置列高
  57. VOID SetItemHeight(UINT uItemHeight);
  58. //消息函数
  59. protected:
  60. //重画消息
  61. VOID OnPaint();
  62. //绘画背景
  63. BOOL OnEraseBkgnd(CDC * pDC);
  64. //销毁消息
  65. afx_msg void OnDestroy();
  66. //左键按下
  67. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  68. //左键抬起
  69. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  70. LRESULT OnLayout( WPARAM wParam, LPARAM lParam );
  71. DECLARE_MESSAGE_MAP()
  72. };
  73. //////////////////////////////////////////////////////////////////////////////////
  74. struct tagItemImage
  75. {
  76. CImageEx *pImage;
  77. int nItem;
  78. };
  79. typedef vector<tagItemImage> CItemImgArray;
  80. //////////////////////////////////////////////////////////////////////////
  81. //列表控件
  82. class SKINUI_CLASS CSkinListCtrl : public CListCtrl,public ISkinControl
  83. {
  84. //数据变量
  85. protected:
  86. bool m_bAscendSort; //升序标志
  87. int m_nHeightItem;
  88. UINT m_uActiveItem;
  89. CItemImgArray m_ItemImgArray;
  90. //资源定义
  91. public:
  92. CImageEx * m_pHovenImg, * m_pSelectImg;
  93. CImageEx * m_pCheckImg, * m_pUnCheckImg;
  94. //变量定义
  95. public:
  96. CSkinHeaderCtrl m_SkinHeaderCtrl; //列头控件
  97. //函数定义
  98. public:
  99. //构造函数
  100. CSkinListCtrl();
  101. //析构函数
  102. virtual ~CSkinListCtrl();
  103. //重载函数
  104. public:
  105. //控件绑定
  106. virtual VOID PreSubclassWindow();
  107. //绘画函数
  108. virtual VOID DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  109. //设置属性
  110. virtual void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
  111. //设置属性
  112. virtual void ParseItem(CXmlNode *root);
  113. //创建控件
  114. virtual BOOL CreateControl(CWnd* pParentWnd);
  115. //Report设置资源
  116. public:
  117. //设置资源
  118. BOOL SetHovenImage(LPCTSTR lpszFileName,CONST LPRECT lprcNinePart=NULL);
  119. //设置资源
  120. BOOL SetSelectImage(LPCTSTR lpszFileName,CONST LPRECT lprcNinePart=NULL);
  121. //设置资源
  122. BOOL SetCheckImage(LPCTSTR lpszCheckName,LPCTSTR lpszUnCheckName);
  123. //插入图标
  124. BOOL InsertImage(int nItem,LPCTSTR lpszFileName);
  125. //伪重载函数
  126. public:
  127. //插入节点
  128. int InsertItem(const LVITEM* pItem);
  129. //插入节点
  130. int InsertItem(int nItem, LPCTSTR lpszItem);
  131. //插入节点
  132. int InsertItem(int nItem, LPCTSTR lpszItem, int nImage);
  133. //插入节点
  134. int InsertItem(UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState,UINT nStateMask, int nImage, LPARAM lParam);
  135. //设置风格
  136. DWORD SetExtendedStyle(DWORD dwNewStyle);
  137. //绘画控制
  138. protected:
  139. //绘画数据
  140. VOID DrawReportItem(CDC * pDC, INT nItem, CRect & rcSubItem, INT nColumnIndex);
  141. //功能设置
  142. public:
  143. //高度设置
  144. void SetItemHeight(int nHeight);
  145. //消息函数
  146. protected:
  147. //建立消息
  148. INT OnCreate(LPCREATESTRUCT lpCreateStruct);
  149. //
  150. afx_msg void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
  151. //销毁消息
  152. afx_msg void OnDestroy();
  153. //鼠标移动
  154. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  155. //重绘背景
  156. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  157. //左键按下
  158. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  159. DECLARE_MESSAGE_MAP()
  160. };
  161. //////////////////////////////////////////////////////////////////////////////////
  162. #endif