#ifndef __UICONTROL_H__ #define __UICONTROL_H__ #pragma once namespace DuiLib { ///////////////////////////////////////////////////////////////////////////////////// // typedef CControlUI* (CALLBACK* FINDCONTROLPROC)(CControlUI*, LPVOID); class UILIB_API CControlUI { public: CControlUI(); virtual ~CControlUI(); public: virtual CDuiString GetName() const; virtual void SetName(LPCTSTR pstrName); virtual LPCTSTR GetClass() const; virtual LPVOID GetInterface(LPCTSTR pstrName); virtual UINT GetControlFlags() const; virtual HWND GetNativeWindow() const; virtual bool Activate(); virtual CPaintManagerUI* GetManager() const; virtual void SetManager(CPaintManagerUI* pManager, CControlUI* pParent, bool bInit = true); virtual CControlUI* GetParent() const; // �ı���� virtual CDuiString GetText() const; virtual void SetText(LPCTSTR pstrText); virtual void SetText (LPCSTR pstrText); virtual void SetTextInt(int text); virtual void SetTextFloat(int text,int decimal = 2); // ͼ����� DWORD GetBkColor() const; void SetBkColor(DWORD dwBackColor); DWORD GetBkColor2() const; void SetBkColor2(DWORD dwBackColor); DWORD GetBkColor3() const; void SetBkColor3(DWORD dwBackColor); LPCTSTR GetBkImage(); void SetBkImage(LPCTSTR pStrImage); DWORD GetFocusBorderColor() const; void SetFocusBorderColor(DWORD dwBorderColor); bool IsColorHSL() const; void SetColorHSL(bool bColorHSL); SIZE GetBorderRound() const; void SetBorderRound(SIZE cxyRound); bool DrawImage(HDC hDC, TDrawInfo& drawInfo); //modify by Hong; void SetBkFillMode(LPCTSTR pstrMode); //�߿���� DWORD GetBorderColor() const; void SetBorderColor(DWORD dwBorderColor); RECT GetBorderSize() const; void SetBorderSize(RECT rc); void SetBorderSize(int iSize); int GetBorderStyle() const; void SetBorderStyle(int nStyle); // λ����� virtual const RECT& GetPos() const; virtual RECT GetRelativePos() const; // ���(���ؼ�)λ�� virtual RECT GetClientPos() const; // �ͻ�����ȥscrollbar��inset�� // ֻ�пؼ�Ϊfloat��ʱ���ⲿ����SetPos��Move������Ч�ģ�λ�ò�������Ը��ؼ���λ�� virtual void SetPos(RECT rc, bool bNeedInvalidate = true); virtual void Move(SIZE szOffset, bool bNeedInvalidate = true); virtual int GetWidth() const; virtual int GetHeight() const; virtual int GetX() const; virtual int GetY() const; virtual RECT GetPadding() const; virtual void SetPadding(RECT rcPadding); // ������߾࣬���ϲ㴰�ڻ��� virtual SIZE GetFixedXY() const; // ʵ�ʴ�Сλ��ʹ��GetPos��ȡ������õ�����Ԥ��IJο�ֵ virtual void SetFixedXY(SIZE szXY); // ��floatΪtrueʱ��Ч virtual int GetFixedWidth() const; // ʵ�ʴ�Сλ��ʹ��GetPos��ȡ������õ�����Ԥ��IJο�ֵ virtual void SetFixedWidth(int cx); // Ԥ��IJο�ֵ virtual int GetFixedHeight() const; // ʵ�ʴ�Сλ��ʹ��GetPos��ȡ������õ�����Ԥ��IJο�ֵ virtual void SetFixedHeight(int cy); // Ԥ��IJο�ֵ virtual int GetMinWidth() const; virtual void SetMinWidth(int cx); virtual int GetMaxWidth() const; virtual void SetMaxWidth(int cx); virtual int GetMinHeight() const; virtual void SetMinHeight(int cy); virtual int GetMaxHeight() const; virtual void SetMaxHeight(int cy); virtual TPercentInfo GetFloatPercent() const; virtual void SetFloatPercent(TPercentInfo piFloatPercent); //add by hong; virtual void SetFixedSize (int cx,int cy); virtual BOOL PostMessageToPaintWindow (UINT msg, WPARAM wparam, LPARAM lparam); // �����ʾ virtual CDuiString GetToolTip() const; virtual void SetToolTip(LPCTSTR pstrText); virtual void SetToolTipWidth(int nWidth); virtual int GetToolTipWidth(void); // ����ToolTip��������� // ��ݼ� virtual TCHAR GetShortcut() const; virtual void SetShortcut(TCHAR ch); // �˵� virtual bool IsContextMenuUsed() const; virtual void SetContextMenuUsed(bool bMenuUsed); // �û����� virtual const CDuiString& GetUserData(); // �������������û�ʹ�� virtual void SetUserData(LPCTSTR pstrText); // �������������û�ʹ�� virtual UINT_PTR GetTag() const; // �������������û�ʹ�� virtual void SetTag(UINT_PTR pTag); // �������������û�ʹ�� // һЩ��Ҫ������ virtual bool IsVisible() const; virtual void SetVisible(bool bVisible = true); virtual void SetInternVisible(bool bVisible = true); // �����ڲ����ã���ЩUIӵ�д��ھ������Ҫ��д�˺��� virtual bool IsEnabled() const; virtual void SetEnabled(bool bEnable = true); virtual bool IsMouseEnabled() const; virtual void SetMouseEnabled(bool bEnable = true); virtual bool IsKeyboardEnabled() const; virtual void SetKeyboardEnabled(bool bEnable = true); virtual bool IsFocused() const; virtual void SetFocus(); virtual bool IsFloat() const; virtual void SetFloat(bool bFloat = true); // �Զ���(δ������)���� void AddCustomAttribute(LPCTSTR pstrName, LPCTSTR pstrAttr); LPCTSTR GetCustomAttribute(LPCTSTR pstrName) const; bool RemoveCustomAttribute(LPCTSTR pstrName); void RemoveAllCustomAttribute(); virtual CControlUI* FindControl(FINDCONTROLPROC Proc, LPVOID pData, UINT uFlags); CControlUI* FindSubControl (LPCTSTR pstrSubControlName); template<class ControlTy_ = CControlUI> ControlTy_* const FindSubControlEx (LPCTSTR lpstrName) { auto pControl = FindSubControl (lpstrName); return reinterpret_cast<ControlTy_*>(pControl); }; #define DUI_SUBOBJ(obj_name,obj_parent) auto obj_name = obj_parent->FindSubControl(L#obj_name) #define DUI_SUBOBJ_EXT(obj_name,obj_type,obj_parent) auto obj_name = obj_parent->FindSubControlEx<obj_type>(L#obj_name) void Invalidate(); bool IsUpdateNeeded() const; void NeedUpdate(); void NeedParentUpdate(); DWORD GetAdjustColor(DWORD dwColor); virtual void Init(); virtual void DoInit(); virtual void Event(TEventUI& event); virtual void DoEvent(TEventUI& event); virtual void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue); CControlUI* ApplyAttributeList(LPCTSTR pstrList); void SetColor_Normal(); void SetColor_Prewarning(); void SetColor_Warning(); void SetColor_Disable(); virtual SIZE EstimateSize(SIZE szAvailable); virtual void Paint(HDC hDC, const RECT& rcPaint); virtual void DoPaint(HDC hDC, const RECT& rcPaint); virtual void PaintBkColor(HDC hDC); virtual void PaintBkImage(HDC hDC); virtual void PaintStatusImage(HDC hDC); virtual void PaintText(HDC hDC); virtual void PaintBorder(HDC hDC); virtual void DoPostPaint(HDC hDC, const RECT& rcPaint); //���ⴰ�ڲ��� void SetVirtualWnd(LPCTSTR pstrValue); CDuiString GetVirtualWnd() const; public: CEventSource OnInit; CEventSource OnDestroy; CEventSource OnSize; CEventSource OnEvent; CEventSource OnNotify; CEventSource OnPaint; CEventSource OnPostPaint; protected: CPaintManagerUI* m_pManager; CControlUI* m_pParent; CDuiString m_sVirtualWnd; CDuiString m_sName; bool m_bUpdateNeeded; bool m_bMenuUsed; RECT m_rcItem; RECT m_rcPadding; SIZE m_cXY; SIZE m_cxyFixed; SIZE m_cxyMin; SIZE m_cxyMax; bool m_bVisible; bool m_bInternVisible; bool m_bEnabled; bool m_bMouseEnabled; bool m_bKeyboardEnabled ; bool m_bFocused; bool m_bFloat; TPercentInfo m_piFloatPercent; bool m_bSetPos; // ��ֹSetPosѭ������ CDuiString m_sText; CDuiString m_sToolTip; TCHAR m_chShortcut; CDuiString m_sUserData; UINT_PTR m_pTag; DWORD m_dwBackColor; DWORD m_dwBackColor2; DWORD m_dwBackColor3; TDrawInfo m_diBk; TDrawInfo m_diFore; DWORD m_dwBorderColor; DWORD m_dwFocusBorderColor; bool m_bColorHSL; int m_nBorderStyle; int m_nTooltipWidth; SIZE m_cxyBorderRound; RECT m_rcPaint; RECT m_rcBorderSize; CStdStringPtrMap m_mCustomAttrHash; //modfiy by hong,Gradient fill mode; enum GRADIENT_FILL_MODE:DWORD { HOZ = GRADIENT_FILL_RECT_H, VET = GRADIENT_FILL_RECT_V }m_dwFillMode; }; } // namespace DuiLib #endif // __UICONTROL_H__