UIContainer.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. public:
  26. CContainerUI();
  27. virtual ~CContainerUI();
  28. public:
  29. LPCTSTR GetClass() const;
  30. LPVOID GetInterface(LPCTSTR pstrName);
  31. CControlUI* GetItemAt(int iIndex) const;
  32. int GetItemIndex(CControlUI* pControl) const;
  33. bool SetItemIndex(CControlUI* pControl, int iIndex);
  34. int GetCount() const;
  35. bool Add(CControlUI* pControl);
  36. CControlUI* Add (LPCTSTR lpXMLFile, LPCTSTR name = nullptr);
  37. bool AddAt(CControlUI* pControl, int iIndex);
  38. CControlUI* AddAt (LPCTSTR lpXMLFile, int iIndex, LPCTSTR name = nullptr);
  39. bool Remove(CControlUI* pControl);
  40. bool RemoveAt(int iIndex);
  41. void RemoveAll();
  42. void DoEvent(TEventUI& event);
  43. void SetVisible(bool bVisible = true);
  44. void SetInternVisible(bool bVisible = true);
  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 bool IsAutoDestroy() const;
  51. virtual void SetAutoDestroy(bool bAuto);
  52. virtual bool IsDelayedDestroy() const;
  53. virtual void SetDelayedDestroy(bool bDelayed);
  54. virtual bool IsMouseChildEnabled() const;
  55. virtual void SetMouseChildEnabled(bool bEnable = true);
  56. virtual int FindSelectable(int iIndex, bool bForward = true) const;
  57. RECT GetClientPos() const;
  58. void SetPos(RECT rc, bool bNeedInvalidate = true);
  59. void Move(SIZE szOffset, bool bNeedInvalidate = true);
  60. void DoPaint(HDC hDC, const RECT& rcPaint);
  61. void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
  62. void SetManager(CPaintManagerUI* pManager, CControlUI* pParent, bool bInit = true);
  63. CControlUI* FindControl(FINDCONTROLPROC Proc, LPVOID pData, UINT uFlags);
  64. bool SetSubControlText(LPCTSTR pstrSubControlName,LPCTSTR pstrText);
  65. bool SetSubControlFixedHeight(LPCTSTR pstrSubControlName,int cy);
  66. bool SetSubControlFixedWdith(LPCTSTR pstrSubControlName,int cx);
  67. bool SetSubControlUserData(LPCTSTR pstrSubControlName,LPCTSTR pstrText);
  68. CDuiString GetSubControlText(LPCTSTR pstrSubControlName);
  69. int GetSubControlFixedHeight(LPCTSTR pstrSubControlName);
  70. int GetSubControlFixedWdith(LPCTSTR pstrSubControlName);
  71. const CDuiString GetSubControlUserData(LPCTSTR pstrSubControlName);
  72. CControlUI* FindSubControl(LPCTSTR pstrSubControlName);
  73. #define DECL_DUI_SUBITEM(itemname) CControlUI* _##itemname= FindSubControl(L#itemname)
  74. #define DECL_DUI_SUBITEM_EXT(itemname,itemtype) itemtype* m_##itemname= reinterpret_cast<itemtype*>(FindSubControl(L#itemname))
  75. CControlUI* FindItemFromGroup (LPCTSTR pstrGroup, UINT_PTR tag);
  76. virtual SIZE GetScrollPos() const;
  77. virtual SIZE GetScrollRange() const;
  78. virtual void SetScrollPos(SIZE szPos);
  79. virtual void LineUp();
  80. virtual void LineDown();
  81. virtual void PageUp();
  82. virtual void PageDown();
  83. virtual void HomeUp();
  84. virtual void EndDown();
  85. virtual void LineLeft();
  86. virtual void LineRight();
  87. virtual void PageLeft();
  88. virtual void PageRight();
  89. virtual void HomeLeft();
  90. virtual void EndRight();
  91. virtual void EnableScrollBar(bool bEnableVertical = true, bool bEnableHorizontal = false);
  92. virtual CScrollBarUI* GetVerticalScrollBar() const;
  93. virtual CScrollBarUI* GetHorizontalScrollBar() const;
  94. virtual void SetItemFont (int iIndex);
  95. virtual int GetItemFont () const;
  96. protected:
  97. virtual void SetFloatPos(int iIndex);
  98. virtual void ProcessScrollBar(RECT rc, int cxRequired, int cyRequired);
  99. protected:
  100. CStdPtrArray m_items;
  101. RECT m_rcInset;
  102. int m_iChildPadding;
  103. bool m_bAutoDestroy;
  104. bool m_bDelayedDestroy;
  105. bool m_bMouseChildEnabled;
  106. bool m_bScrollProcess; // 防止SetPos循环调用
  107. //add by HONG.
  108. int m_iItemFont;
  109. virtual LPCTSTR GetChildXmlFile () const;
  110. virtual void DoInit ();
  111. CScrollBarUI* m_pVerticalScrollBar;
  112. CScrollBarUI* m_pHorizontalScrollBar;
  113. };
  114. } // namespace DuiLib
  115. #endif // __UICONTAINER_H__