SkinTreeCtrl.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #pragma once
  2. #include "SkinUI.h"
  3. #include "ISkinControl.h"
  4. // CSkinTreeCtrl
  5. struct tagItemInfo
  6. {
  7. HTREEITEM hTreeItem;
  8. CImageEx *pImage;
  9. };
  10. typedef map<HTREEITEM,tagItemInfo> CMapItemInfo;
  11. //////////////////////////////////////////////////////////////////////////
  12. class SKINUI_CLASS CSkinTreeCtrl : public CTreeCtrl,public ISkinControl
  13. {
  14. DECLARE_DYNAMIC(CSkinTreeCtrl)
  15. //资源变量
  16. protected:
  17. CImageEx *m_pImageButton; //按钮资源
  18. CImageEx *m_pHovenImg, *m_pPressImg; //节点资源
  19. //辅助变量
  20. protected:
  21. HTREEITEM m_hItemMouseHover; //盘旋子项
  22. UINT m_uCursorRes; //鼠标资源
  23. CMapItemInfo m_MapItemInfo; //资源容器
  24. //节点的颜色
  25. public:
  26. COLORREF m_colHoven,m_colPress; //节点颜色
  27. public:
  28. CSkinTreeCtrl();
  29. virtual ~CSkinTreeCtrl();
  30. public:
  31. //设置属性
  32. virtual void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
  33. //创建控件
  34. virtual BOOL CreateControl(CWnd* pParentWnd);
  35. //设置属性
  36. virtual void ParseItem(CXmlNode *root);
  37. public:
  38. //设置资源
  39. BOOL SetButtonImage(LPCTSTR lpszFileName);
  40. //设置资源
  41. BOOL SetHovenImage(LPCTSTR lpszFileName,CONST LPRECT lprcNinePart=NULL);
  42. //设置资源
  43. BOOL SetPressImage(LPCTSTR lpszFileName,CONST LPRECT lprcNinePart=NULL);
  44. //插入图标
  45. BOOL InsertImage(HTREEITEM hTreeItem,LPCTSTR lpszFileName);
  46. //设置鼠标
  47. void SetCursorStyle(UINT uID);
  48. //绘画辅助
  49. private:
  50. //绘画子项
  51. VOID DrawTreeItem(CDC * pDC, CRect & rcClient, CRect & rcClipBox);
  52. //绘制图标
  53. VOID DrawListImage(CDC * pDC, CRect rcRect, HTREEITEM hTreeItem, bool bSelected);
  54. //绘制文本
  55. VOID DrawItemString(CDC * pDC, CRect rcRect, HTREEITEM hTreeItem, bool bSelected);
  56. //消息函数
  57. public:
  58. //绘制消息
  59. afx_msg void OnPaint();
  60. //设置鼠标
  61. afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
  62. //销毁消息
  63. afx_msg void OnDestroy();
  64. protected:
  65. DECLARE_MESSAGE_MAP()
  66. };