UIContainer.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #ifndef __UICONTAINER_H__
  2. #define __UICONTAINER_H__
  3. #pragma once
  4. namespace DuiLib {
  5. /////////////////////////////////////////////////////////////////////////////////////
  6. //
  7. class IContainerUI
  8. {
  9. public:
  10. virtual CControlUI* GetItemAt(int iIndex) const = 0;
  11. virtual int GetItemIndex(CControlUI* pControl) const = 0;
  12. virtual bool SetItemIndex(CControlUI* pControl, int iIndex) = 0;
  13. virtual int GetCount() const = 0;
  14. virtual bool Add(CControlUI* pControl) = 0;
  15. virtual bool AddAt(CControlUI* pControl, int iIndex) = 0;
  16. virtual bool Remove(CControlUI* pControl) = 0;
  17. virtual bool RemoveAt(int iIndex) = 0;
  18. virtual void RemoveAll() = 0;
  19. };
  20. /////////////////////////////////////////////////////////////////////////////////////
  21. //
  22. class CScrollBarUI;
  23. class UILIB_API CContainerUI : public CControlUI, public IContainerUI
  24. {
  25. DECLARE_DUICONTROL(CContainerUI)
  26. public:
  27. CContainerUI();
  28. virtual ~CContainerUI();
  29. public:
  30. LPCTSTR GetClass() const;
  31. LPVOID GetInterface(LPCTSTR pstrName);
  32. CControlUI* GetItemAt(int iIndex) const;
  33. int GetItemIndex(CControlUI* pControl) const;
  34. bool SetItemIndex(CControlUI* pControl, int iIndex);
  35. int GetCount() const;
  36. bool Add(CControlUI* pControl);
  37. bool AddAt(CControlUI* pControl, int iIndex);
  38. bool Remove(CControlUI* pControl);
  39. bool RemoveAt(int iIndex);
  40. void RemoveAll();
  41. void DoEvent(TEventUI& event);
  42. void SetVisible(bool bVisible = true);
  43. void SetInternVisible(bool bVisible = true);
  44. void SetEnabled(bool bEnabled);
  45. void SetMouseEnabled(bool bEnable = true);
  46. virtual RECT GetInset() const;
  47. virtual void SetInset(RECT rcInset); // 设置内边距,相当于设置客户区
  48. virtual int GetChildPadding() const;
  49. virtual void SetChildPadding(int iPadding);
  50. virtual UINT GetChildAlign() const;
  51. virtual void SetChildAlign(UINT iAlign);
  52. virtual UINT GetChildVAlign() const;
  53. virtual void SetChildVAlign(UINT iVAlign);
  54. virtual bool IsAutoDestroy() const;
  55. virtual void SetAutoDestroy(bool bAuto);
  56. virtual bool IsDelayedDestroy() const;
  57. virtual void SetDelayedDestroy(bool bDelayed);
  58. virtual bool IsMouseChildEnabled() const;
  59. virtual void SetMouseChildEnabled(bool bEnable = true);
  60. bool IsFixedScrollbar();
  61. void SetFixedScrollbar(bool bFixed);
  62. bool IsShowScrollbar();
  63. void SetShowScrollbar(bool bShow);
  64. virtual int FindSelectable(int iIndex, bool bForward = true) const;
  65. RECT GetClientPos() const;
  66. void SetPos(RECT rc, bool bNeedInvalidate = true);
  67. void Move(SIZE szOffset, bool bNeedInvalidate = true);
  68. bool DoPaint(HDC hDC, const RECT& rcPaint, CControlUI* pStopControl);
  69. void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
  70. void SetManager(CPaintManagerUI* pManager, CControlUI* pParent, bool bInit = true);
  71. CControlUI* FindControl(FINDCONTROLPROC Proc, LPVOID pData, UINT uFlags);
  72. bool SetSubControlText(LPCTSTR pstrSubControlName,LPCTSTR pstrText);
  73. bool SetSubControlFixedHeight(LPCTSTR pstrSubControlName,int cy);
  74. bool SetSubControlFixedWdith(LPCTSTR pstrSubControlName,int cx);
  75. bool SetSubControlUserData(LPCTSTR pstrSubControlName,LPCTSTR pstrText);
  76. CDuiString GetSubControlText(LPCTSTR pstrSubControlName);
  77. int GetSubControlFixedHeight(LPCTSTR pstrSubControlName);
  78. int GetSubControlFixedWdith(LPCTSTR pstrSubControlName);
  79. const CDuiString GetSubControlUserData(LPCTSTR pstrSubControlName);
  80. CControlUI* FindSubControl(LPCTSTR pstrSubControlName);
  81. virtual SIZE GetScrollPos() const;
  82. virtual SIZE GetScrollRange() const;
  83. virtual void SetScrollPos(SIZE szPos, bool bMsg = true);
  84. virtual void SetScrollStepSize(int nSize);
  85. virtual int GetScrollStepSize() const;
  86. virtual void LineUp();
  87. virtual void LineDown();
  88. virtual void PageUp();
  89. virtual void PageDown();
  90. virtual void HomeUp();
  91. virtual void EndDown();
  92. virtual void LineLeft();
  93. virtual void LineRight();
  94. virtual void PageLeft();
  95. virtual void PageRight();
  96. virtual void HomeLeft();
  97. virtual void EndRight();
  98. virtual void EnableScrollBar(bool bEnableVertical = true, bool bEnableHorizontal = false);
  99. virtual CScrollBarUI* GetVerticalScrollBar() const;
  100. virtual CScrollBarUI* GetHorizontalScrollBar() const;
  101. protected:
  102. virtual void SetFloatPos(int iIndex);
  103. virtual void ProcessScrollBar(RECT rc, int cxRequired, int cyRequired);
  104. protected:
  105. CStdPtrArray m_items;
  106. RECT m_rcInset;
  107. int m_iChildPadding;
  108. UINT m_iChildAlign;
  109. UINT m_iChildVAlign;
  110. bool m_bAutoDestroy;
  111. bool m_bDelayedDestroy;
  112. bool m_bMouseChildEnabled;
  113. int m_nScrollStepSize;
  114. bool m_bFixedScrollbar;
  115. bool m_bShowScrollbar;
  116. CScrollBarUI* m_pVerticalScrollBar;
  117. CScrollBarUI* m_pHorizontalScrollBar;
  118. CDuiString m_sVerticalScrollBarStyle;
  119. CDuiString m_sHorizontalScrollBarStyle;
  120. };
  121. } // namespace DuiLib
  122. #endif // __UICONTAINER_H__