MyListCtrl.h
上传用户:jzscgs158
上传日期:2022-05-25
资源大小:8709k
文件大小:6k
源码类别:

百货/超市行业

开发平台:

Visual C++

  1. //说明:
  2. //1:此列的建立可以方便的进行列表的各种操作
  3. //2:在数据应经存在的情况下不可以添加新的列
  4. //3:当blnMenu设置为TRUE时可以显示排列菜单
  5. //4:可以操作的数据类型为
  6. // A:CBo列表型(ctr_Edit_Cbo):AddCboItem和RemoveCboItem
  7. //      B:Edit编辑性(ctr_Edit_Text)
  8. //      C:DateTime型(ctr_Edit_DateTime)
  9. //      E:Time型(Ctr_Edit_Time)
  10. //      F:Date型(Ctr_Edit_Date)
  11. //      G:数字型(Ctr_Edit_Num):SetNumStyle和GetNumStyle
  12. // H:没有编辑框型(Ctr_Edit_No)
  13. //5:使用过程中出现其他错误不予负责
  14. //----------------------------------------------------------设计人:牛文平
  15. #ifndef MYSORTLISTCTRL_H
  16. #define MYSORTLISTCTRL_H
  17. #if _MSC_VER > 1000
  18. #pragma once
  19. #endif // _MSC_VER > 1000
  20. #ifndef SORTHEADERCTRL_H
  21. #include "MyHeaderCtrl.h"
  22. #endif
  23. #ifdef _DEBUG
  24. #define ASSERT_VALID_STRING( str ) ASSERT( !IsBadStringPtr( str, 0xfffff ) )
  25. #else // _DEBUG
  26. #define ASSERT_VALID_STRING( str ) ( (void)0 )
  27. #endif // _DEBUG
  28. //菜单资源号
  29. #include "MyDateEdit.h"
  30. #include "MyNumEdit.h"
  31. #define ID_MENU_show1 WM_USER+11
  32. #define ID_MENU_show2 WM_USER+11
  33. #define ID_MENU_sep WM_USER+12
  34. #define ID_MENU_icon WM_USER+13
  35. #define ID_MENU_smallicon WM_USER+14
  36. #define ID_MENU_list WM_USER+15
  37. #define ID_MENU_report WM_USER+16
  38. #define ID_MENU_No WM_USER+17
  39. #define ID_MENU_Click WM_USER+18
  40. #define ID_MENU_DblClick WM_USER+19
  41. //编辑框资源号
  42. #define ID_EditText WM_USER+1
  43. #define ID_EditDateTime WM_USER+2
  44. #define ID_EditCboDown WM_USER+3
  45. #define ID_EditCboList WM_USER+4
  46. #define ID_EditNum WM_USER+5
  47. #define ID_EditPoP WM_USER+6
  48. //列表编辑模式
  49. #define ctr_Edit_No 0
  50. #define ctr_Edit_Text 1
  51. #define ctr_Edit_Date 2
  52. #define ctr_Edit_DateTime 3
  53. #define ctr_Edit_Time 4
  54. #define ctr_Edit_CboDown 5
  55. #define ctr_Edit_CboDownList 6
  56. #define ctr_Edit_Num 7
  57. //启动编辑模式
  58. #define ctr_Edit_No 0
  59. #define ctr_Edit_Click 1
  60. #define ctr_Edit_DblClick 2
  61. class CMyListCtrl : public CListCtrl
  62. {
  63. public:
  64. //构造函数
  65. CMyListCtrl();
  66. //删除一项
  67. BOOL DeleteItem( int iItem );
  68. //删除所有项
  69. BOOL DeleteAllItems();
  70. //设置子项字符
  71. BOOL SetItemText( int nItem, int nSubItem, LPCTSTR lpszText );
  72. //排列单列
  73. void Sort( int iColumn, BOOL bAscending );
  74. //设置单项数据
  75. BOOL SetItemData(int nItem, DWORD dwData);
  76. //返回单项数据
  77. DWORD GetItemData(int nItem) const;
  78. //添加一项
  79. //image:图像索引
  80. int AddItem(int image);
  81. //添加一列
  82. //nformat:LVCFMT_CENTER
  83. int InsertColumnX(CString strName,int nFormat,int iWidth,int intEdit);
  84. //设置排列方式方式(LVS_ICON,LVS_SMALLICON,LVS_LIST,LVS_REPORT)
  85. void SetMyStyle(DWORD dwNewStyle);
  86. //返回当前的排列方式(LVS_ICON,LVS_SMALLICON,LVS_LIST,LVS_REPORT)
  87. DWORD GetMyStyle();
  88. //注册列头
  89. BOOL SetHeader();
  90. //设置是否显示菜单
  91. void SetShowMenu(BOOL blnShow);
  92. //设置编辑框的位置
  93. void SetEditPos(BOOL blnShow,int itemX,int itemY,BOOL blnCbo);
  94. //设置列的编辑模式
  95. void SetColumnStyle(int item,int intEdit);
  96. //得到框的编辑模式
  97. int GetColumnStyle(int item);
  98. CStringArray *GetCboArrayData(int nitem);
  99. BOOL blnAllEdit;
  100. BOOL blnMenu;
  101. CEdit ctl_EditText;
  102. CMyDateEdit ctl_EditDateTime;
  103. CComboBox ctl_EditComboDown;
  104. CComboBox ctl_EditComboDownList;
  105. CMyNumEdit ctl_EditNum;
  106. BOOL m_bSortAscending;
  107. //0:NO 1:click 2:doubleclick
  108. int m_EditStyle;
  109. CStringArray strArrayEditStyle;
  110. CStringArray CboArrayIndex;
  111. CObArray CboArrayData;
  112. CStringArray NumArrayIndex;
  113. CObArray NumArrayData;
  114. CStringArray NumArrayAuto;
  115. CMyHeaderCtrl m_ctlHeader;
  116. int itemX;
  117. int itemY;
  118. void GetItemPos(CPoint point);
  119. BOOL Key_Shift(int& nItem,int& nSub);
  120. BOOL Key_Ctrl(int& nItem,int &nSub);
  121. //向Cbo中添加数据
  122. void AddCboItem(int nItem,CString strText);
  123. //在Cbo删除strText项
  124. void RemoveCboItem(int nitem,CString strText);
  125. //向Cbo中填充数据
  126. void FillCboData(int nitem);
  127. //intLeft:整数部分
  128. //intRight:小数部分
  129. void SetNumEditStyle(int nitem,int intLeft,int intRight);
  130. void SetNumEditAuto(int nitem,BOOL blnAuto);
  131. //返回数字型的是否自动填充
  132. BOOL GetNumEditAuto(int nitem);
  133. //返回Num类型的范围
  134. //CPoint.X:整数部分
  135. //CPoint.y:小数部分
  136. CPoint *GetNumEditStyle(int nitem);
  137. //
  138. void SetItemFont(CFont ft);
  139. //{{AFX_VIRTUAL(CMyListCtrl)
  140. protected:
  141. virtual void PreSubclassWindow();
  142. //}}AFX_VIRTUAL
  143. public:
  144. virtual ~CMyListCtrl();
  145. // Overrides
  146. // ClassWizard generated virtual function overrides
  147. //{{AFX_VIRTUAL(CEditListCtrl)
  148. public:
  149. virtual BOOL PreTranslateMessage(MSG* pMsg);
  150. //}}AFX_VIRTUAL
  151. // Implementation
  152. protected:
  153. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  154. static int CALLBACK CompareFunction( LPARAM lParam1, LPARAM lParam2, LPARAM lParamData );
  155. void FreeItemMemory( const int iItem );
  156. BOOL CMyListCtrl::SetTextArray( int iItem, LPTSTR* arrpsz );
  157. LPTSTR* CMyListCtrl::GetTextArray( int iItem ) const;
  158. int m_iNumColumns;
  159. int m_iSortColumn;
  160. //{{AFX_MSG(CMyListCtrl)
  161. afx_msg void OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult);
  162. afx_msg void OnDestroy();
  163. afx_msg void OnRButtonDown( UINT nFlags, CPoint point );
  164. afx_msg void OnLButtonDblClk( UINT nFlags, CPoint point );
  165. afx_msg void OnLButtonDown( UINT nFlags, CPoint point );
  166. afx_msg void OnMenuitemlist();
  167. afx_msg void OnMenuitemicon();
  168. afx_msg void OnMenuitemsmallicon();
  169. afx_msg void OnMenuitemreport();
  170. afx_msg void OnMenuNo();
  171. afx_msg void OnMenuClick();
  172. afx_msg void OnMenuDblClick();
  173. afx_msg void OnParentNotify(UINT message, LPARAM lParam);
  174. afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  175. afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  176. //}}AFX_MSG
  177. DECLARE_MESSAGE_MAP()
  178. };
  179. //{{AFX_INSERT_LOCATION}}
  180. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  181. #endif // SORTLISTCTRL_H