TreeCtrlMultiColumn.h
上传用户:maicowu
上传日期:2007-01-02
资源大小:87k
文件大小:4k
源码类别:

TreeView控件

开发平台:

Visual C++

  1. /************************************
  2.   REVISION LOG ENTRY
  3.   Revision By: Mihai Filimon
  4.   Revised on 6/20/98 2:45:52 PM
  5.   Comments: TreeCtrlMultiColumn.h: interface for the CTreeMultiColumnCtrl class.
  6.  ************************************/
  7. #if !defined(AFX_TREECTRLMULTICOLUMN_H__3FDB7CD3_028A_11D2_861E_0040055C08D9__INCLUDED_)
  8. #define AFX_TREECTRLMULTICOLUMN_H__3FDB7CD3_028A_11D2_861E_0040055C08D9__INCLUDED_
  9. #if _MSC_VER >= 1000
  10. #pragma once
  11. #endif // _MSC_VER >= 1000
  12. #include "Tsyslistviewex.h"
  13. #define LVM_SETPARENT WM_USER + 1
  14. #define LVM_EXPAND WM_USER + 2
  15. #define LVM_COLLAPSE WM_USER + 3
  16. struct _STTreeMCCloneMessage {
  17. CMap<UINT,UINT,BOOL,BOOL> m_mapMessage;
  18. CMap<UINT,UINT,BOOL,BOOL> m_mapMessageHeader;
  19. _STTreeMCCloneMessage()
  20. {
  21. m_mapMessage[LVM_INSERTITEMA] = TRUE;
  22. m_mapMessage[LVM_INSERTITEMW] = TRUE;
  23. m_mapMessage[LVM_DELETEITEM] = TRUE;
  24. m_mapMessage[LVM_DELETEALLITEMS] = TRUE;
  25. m_mapMessage[LVM_SETITEMTEXTA] = TRUE;
  26. m_mapMessage[LVM_SETITEMTEXTW] = TRUE;
  27. m_mapMessage[LVM_SETITEMA] = TRUE;
  28. m_mapMessage[LVM_SETITEMW] = TRUE;
  29. m_mapMessage[LVM_GETITEMCOUNT] = TRUE;
  30. m_mapMessageHeader[LVM_INSERTCOLUMNA] = TRUE;
  31. m_mapMessageHeader[LVM_INSERTCOLUMNW] = TRUE;
  32. m_mapMessageHeader[LVM_DELETECOLUMN] = TRUE;
  33. m_mapMessageHeader[LVM_SETCOLUMNA] = TRUE;
  34. m_mapMessageHeader[LVM_SETCOLUMNW] = TRUE;
  35. }
  36. BOOL Get(CMap<UINT,UINT,BOOL,BOOL>* pMap, UINT message)
  37. {
  38. BOOL value = FALSE;
  39. BOOL result = pMap->Lookup(message, value);
  40. if (result) result = value;
  41. return result;
  42. }
  43. BOOL IsCloneMessage(UINT message)
  44. {
  45. return Get(&m_mapMessage, message);
  46. }
  47. BOOL IsHeaderMessage(UINT message)
  48. {
  49. return Get(&m_mapMessageHeader, message);
  50. }
  51. };
  52. class CTreeMultiColumnCtrl : public CTsyslistviewex  
  53. {
  54. public:
  55. virtual BOOL Delete(int nItem);
  56. void Fill(LPCTSTR lpszItems);
  57. int GetRootColumn() const;
  58. virtual int SetRootColumn(int nNewTreeColumn);
  59. virtual void RecExpandItems(int nItem);
  60. virtual int GetFirstItemChild(int nItem);
  61. virtual int GetNextItemChild();
  62. void ExpandItem(int nItem);
  63. void CollapseItem(int nItem);
  64. BOOL ItemIsExpanded(int iItem);
  65. BOOL IsLastChildren(int iItem);
  66. int GetItemPath(int iItem, CArray<int, int>& arParents);
  67. BOOL ItemHasChildren(int iItem);
  68. int GetItemParent(int iItem);
  69. BOOL SetItemParent(int iItem, int iItemParent);
  70. CTreeMultiColumnCtrl(int nHeightRel = 4);
  71. virtual ~CTreeMultiColumnCtrl();
  72. virtual void ViewGridLines(BOOL bEnable = true) {return;};
  73. virtual void EnableSort(BOOL bEnable = true) {return;};
  74. virtual void PreSubclassWindow( );
  75. virtual LRESULT WindowProc( UINT message, WPARAM wParam, LPARAM lParam ); 
  76. //{{AFX_PUBLIC_DATA:)
  77. //}}AFX_PUBLIC_DATA:)
  78. protected:
  79. BOOL IsDeleted(int nItem);
  80. virtual int GetItemLevel(int nItem);
  81. virtual BOOL IsPtnInSquareRect(CPoint point);
  82. virtual void UpdateTree(UINT message, WPARAM wParam, LPARAM lParam, LRESULT result);
  83. virtual void DrawCell(CDC* pDC, CRect& drawRect, DWORD format, int nItem, int nColumn);
  84. //{{AFX_MSG(CTreeMultiColumnCtrl)
  85. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  86. afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
  87. //}}AFX_MSG
  88. private:
  89. int m_nLastItemFound;
  90. int m_nLastItemFind;
  91. int m_nTreeColumn;
  92. short m_bInsideCode;
  93. static _STTreeMCCloneMessage m_mapCloneMessage;
  94. CListCtrl m_listItems;
  95. CMap<int,int,int,int> m_mapParents;
  96. CMap<int,int,BOOL,BOOL> m_mapItemExpanded;
  97. CMap<int,int,BOOL,BOOL> m_mapItemDeleted;
  98. DECLARE_MESSAGE_MAP()
  99. };
  100. #endif // !defined(AFX_TREECTRLMULTICOLUMN_H__3FDB7CD3_028A_11D2_861E_0040055C08D9__INCLUDED_)