UIPageControl.h 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef __UIPageControl_H
  2. #define __UIPageControl_H
  3. #pragma once
  4. namespace DuiLib
  5. {
  6. class UILIB_API CPageControlUI : public CHorizontalLayoutUI
  7. {
  8. DECLARE_DUICONTROL(CPageControlUI)
  9. public:
  10. CPageControlUI();
  11. ~CPageControlUI();
  12. //maxpage="20,6"
  13. void SetMaxPages(int nPages, int nShowNum = 6);
  14. void SetMaxChar(int nNum = 2);
  15. //设置字体[font="1"]
  16. void SetFont(int nFont);
  17. //设置页码选中的颜色[pageselectedtextcolor]
  18. void SetPageSelectedTextColor(DWORD cr = 0xFF4EB857);
  19. //设置选中的页按钮背景色[pageselectedbkcolor]
  20. void SetPageSelectedBkColor(DWORD cr = 0x00000000);
  21. //设置页码文字颜色[pagetextcolor]
  22. void SetPageNormalTextColor(DWORD cr = 0xff000000);
  23. //设置按钮背景颜色[pagebkcolor]
  24. void SetPageBkColor(DWORD cr = 0x00000000);
  25. //设置hot按钮背景色[pagehotbkcolor]
  26. void SetPageHotBkColor(DWORD cr = 0x00000000);
  27. //设置hot字体颜色[pagehottextcolor]
  28. void SetPageHotTextColor(DWORD cr = 0x00000000);
  29. //设置页码按钮的大小[pagesize="30,30"]
  30. void SetPageNoSize(int w = 30, int h = 30);
  31. //设置goto按钮的大小[gotoeditsize="1,1"]
  32. void SetGotoEditSize(int w = 30, int h = 26);
  33. //设置GotoEdit边框颜色[gotoeditbordercolor="0x00000000"]
  34. void SetGotoEditBorderColor(DWORD cr = 0x00000000);
  35. //设置GotoEdit边框的大小[gotoeditbordersize="1"]
  36. void SetGotoEditBorderSize(int size = 1);
  37. public:
  38. void GotoPage(int nPageNo, bool bAutoGotoOneWhenError = true);
  39. public:
  40. virtual void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
  41. protected:
  42. void ResetAllPages();
  43. void UpdatePosition();
  44. void SelectPage(int nPageIdx);
  45. int GetCurSel();
  46. void UpdateMoreBtnVisiable();
  47. bool IsExistNextMore();
  48. bool OnOptionSelChanged(void* p);
  49. bool OnBtnClick(void* p);
  50. private:
  51. int GetPageNoByControl(CControlUI* pcon);
  52. void UpdatePageNo(int iDelta, bool bReset = false);
  53. void UpdateItemIndex();
  54. int GetIndexByPageNo(int nPageNo);
  55. int GetShowPageNum() { return min(m_nShowPage, m_nMaxPage); };
  56. private:
  57. int m_nFont;
  58. int m_nShowPage;
  59. int m_nMaxPage;
  60. SIZE m_szPage;
  61. SIZE m_szGotoEdit;
  62. int m_nSelPageNo;
  63. DWORD m_dwSelTextColor;
  64. DWORD m_dwSelectedBkColor;
  65. DWORD m_dwNormalTextColor;
  66. DWORD m_dwNormalBkColor;
  67. DWORD m_dwHotBkColor;
  68. DWORD m_dwHotTextColor;
  69. CButtonUI* m_BtnPrevious;
  70. CButtonUI* m_BtnNext;
  71. CButtonUI* m_BtnNextMore;
  72. CStdPtrArray m_OptPageNoArr; //COptionUI*
  73. CButtonUI* m_BtnGoto;
  74. CEditUI* m_EdtPageNo;
  75. COptionUI* m_ConCurSel; //当前是第几页
  76. };
  77. }
  78. #endif //__UIPageControl_H