SkinListBox.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #pragma once
  2. #include "SkinUI.h"
  3. #include "ISkinControl.h"
  4. class SKINUI_CLASS CSkinListBox : public CListBox,public ISkinControl
  5. {
  6. DECLARE_DYNAMIC(CSkinListBox)
  7. //基本变量
  8. protected:
  9. int m_nHovenItem;
  10. vector<tagItemStruct> m_ItemStruct;
  11. int nItemHeight;
  12. //资源定义
  13. protected:
  14. CImageEx * m_pBackImgN; //正常资源
  15. CImageEx * m_pBackImgH; //正常资源
  16. CImageEx * m_pSelectImg; //选中资源
  17. //函数定义
  18. public:
  19. //构造函数
  20. CSkinListBox(void);
  21. //析构函数
  22. ~CSkinListBox(void);
  23. //功能函数
  24. public:
  25. //是否单选
  26. bool IsSingleSel();
  27. //增加文本
  28. void AddString(LPCTSTR lpszItem);
  29. void InsertItem();
  30. //设置高度
  31. int SetItemHeight( int nIndex, UINT cyItemHeight );
  32. //删除文本
  33. int DeleteString( UINT nIndex );
  34. //资源加载
  35. public:
  36. //正常背景
  37. BOOL SetBackNormalImage(LPCTSTR lpszFileName, CONST LPRECT lpNinePart = NULL);
  38. //选中资源
  39. BOOL SetSelectImage(LPCTSTR lpszFileName, CONST LPRECT lpNinePart = NULL);
  40. //节点高亮
  41. BOOL SetHovenImage(LPCTSTR lpszFileName, CONST LPRECT lpNinePart = NULL);
  42. //消息定义
  43. private:
  44. //窗口销毁
  45. afx_msg void OnDestroy();
  46. //鼠标右键
  47. afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
  48. //鼠标移动
  49. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  50. //非客户区
  51. afx_msg void OnNcPaint();
  52. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  53. //重载函数
  54. protected:
  55. //绘制函数
  56. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  57. //
  58. virtual void MeasureItem(LPMEASUREITEMSTRUCT /*lpMeasureItemStruct*/);
  59. //设置属性
  60. virtual void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
  61. //设置属性
  62. virtual void ParseItem(CXmlNode *root);
  63. //创建控件
  64. virtual BOOL CreateControl(CWnd* pParentWnd);
  65. protected:
  66. DECLARE_MESSAGE_MAP()
  67. };