class BaseVisitor
{
public:
virtual ~BaseVisitor(void);
virtual BOOL VisitUiType(UiType* pUiType);
virtual BOOL VisitBtnEx(BtnEx* pBtn);
virtual BOOL VisitCheckEx(CheckEx* pCheck);
virtual BOOL VisitImgEx(ImgEx* pImgEx);
virtual BOOL VisitCompositionExStart(CompositionEx* pCptEx);
virtual BOOL VisitCompositionExEnd(CompositionEx* pCptEx);
protected:
BaseVisitor(void);
};
//------------------------ UI TYPE -------------------------------------
class UiType
{//数据类
public:
enum UI_STATE
{
UI_NORMAL = 0,
UI_PRESS = 1,
UI_FOCUS = 2,
UI_DISENBLE = 3,
UI_HIDE = 4,
};
virtual ~UiType();
virtual BOOL Accept(BaseVisitor* pGpsVistor) = 0;
virtual void Render(HDC& hDC) = 0;
virtual BOOL Init(int ID);
virtual void InitDest(int l, int t, int r, int b);
virtual void SetState(UI_STATE iState);
virtual void ToOldState();
virtual int GetID();
virtual RECT GetDest();
virtual UI_STATE GetState();
virtual void SetTxt(TCHAR* szTxt);
virtual TCHAR* GetTxt();
protected:
UiType();
private:
int m_iThisID;
RECT m_rtDest;
UI_STATE m_iCurState;
UI_STATE m_iPreState;
TCHAR m_szTxt[64];
};
//-------------------------- Btn -------------------------------------
class BtnEx: public UiType
{
public:
BtnEx();
virtual ~BtnEx();
virtual BOOL Accept(BaseVisitor* pGpsVistor);
virtual void Render(HDC& hDC);
};
//----------------------------------------------------------------------
//-------------------------- CheckEx -------------------------------------
class CheckEx: public UiType
{
public:
CheckEx();
virtual ~CheckEx();
virtual BOOL Accept(BaseVisitor* pGpsVistor);
virtual void Render(HDC& hDC);
};
//----------------------------------------------------------------------
//-------------------------- ImgEx -------------------------------------
class ImgEx: public UiType
{
public:
ImgEx();
virtual ~ImgEx();
virtual BOOL Accept(BaseVisitor* pGpsVistor);
virtual void Render(HDC& hDC);
};
//----------------------------------------------------------------------
//-------------------------- CompositionEx ----------------------------
class CompositionEx: public UiType
{
public:
CompositionEx();
virtual ~CompositionEx();
virtual BOOL Accept(BaseVisitor* pGpsVistor);
virtual void Render(HDC& hDC);
void Sharing(UiType* pUi);
void Clear();
BOOL IsHit(POINT pt);
vector<UiType*> m_vpUi;
};
//----------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------
#pragma once
#include "../UiModel/BaseVisitor.h"
#include "../../../HDCMemo.h"
#include "../../../CE600.h"
#include "../../../COMImage.h"
class DecorateBtnSelf: private BtnEx
{
public:
~DecorateBtnSelf(){NULL;}
using BtnEx::UI_STATE;
using BtnEx::UI_NORMAL;
using BtnEx::UI_PRESS;
using BtnEx::UI_FOCUS;
using BtnEx::UI_HIDE;
protected:
DecorateBtnSelf(){NULL;}
};
class DecorateBtn: public DecorateBtnSelf
{
public:
virtual ~DecorateBtn(void);
virtual void Render(HDC& hDC) = 0;
virtual BOOL Accept(BaseVisitor* pGpsVistor);
virtual BOOL Init(int ID);
virtual void InitDest(int l, int t, int r, int b);
virtual void SetTxt(TCHAR* szTxt);
void SetState(UI_STATE iState);
void ToOldState();
int GetID();
RECT GetDest();
UI_STATE GetState();
void SetTxtSytle(int iSize, COLORREF clsTxt, UINT nSign);
void SetTxtPos(RECT rtTxt);
protected:
DecorateBtn(::BtnEx* pBtnEx);
::BtnEx* m_pBtnEx;
int m_iTxtSize;
COLORREF m_clsTxt;
UINT m_nSign;
RECT m_rtTxt;
};
// --------------------- 无透明情况按钮 -----------------------------
class BtnColorStyle: public DecorateBtn
{
public:
BtnColorStyle(::BtnEx* pBtnEx, COLORREF clrNor, COLORREF clrPre, COLORREF clrFou);
~BtnColorStyle();
virtual void Render(HDC& hDC);
protected:
COLORREF m_clrNor;
COLORREF m_clrPre;
COLORREF m_clrFou;
};
class BtnGroupStyle: public BtnColorStyle
{
public:
BtnGroupStyle(::BtnEx* pBtnEx, COLORREF clrNor, COLORREF clrPre, COLORREF clrFou,
HINSTANCEUserEx& hRes, int ImgNorID, int ImgPreID, int ImgFouID, RECT rtBtn, RECT rtImg);
~BtnGroupStyle();
virtual void Render(HDC& hDC);
protected:
HDCMemo *m_pImg[3];
};
class BtnScarfStyle: public BtnGroupStyle
{
public:
BtnScarfStyle(::BtnEx* pBtnEx, COLORREF clrNor, COLORREF clrPre, COLORREF clrFou,
HINSTANCEUserEx& hRes, int ImgNorID, int ImgPreID, int ImgFouID, RECT rtBtn, RECT rtImg,
int ScarfID,RECT rtScarf);
~BtnScarfStyle();
virtual void Render(HDC& hDC);
};
// --------------------- 含透明情况按钮 -----------------------------
class BtnAlphaStyle: public DecorateBtn
{
public:
BtnAlphaStyle(::BtnEx* pBtnEx, HINSTANCEUserEx& hRes, int ImgNorPreID);
~BtnAlphaStyle();
virtual void Render(HDC& hDC);
protected:
IImageEx m_objAlphaImg;
int m_iUnitW;
};
class BtnAlpha2Style: public DecorateBtn
{
public:
BtnAlpha2Style(::BtnEx* pBtnEx, HINSTANCEUserEx& hRes, RECT rtBtn,
int iImgNorID, RECT rtNor,
int iImgPreID, RECT rtPre);
~BtnAlpha2Style();
virtual void Render(HDC& hDC);
protected:
IImageEx m_objAlphaImgNor;
IImageEx m_objAlphaImgPre;
RECT m_rtNor;
RECT m_rtPre;
};
class BtnAlpha2ScarfStyle: public BtnAlpha2Style
{
public:
BtnAlpha2ScarfStyle(::BtnEx* pBtnEx, HINSTANCEUserEx& hRes, RECT rtBtn,
int iImgNorID, RECT rtNor,
int iImgPreID, RECT rtPre,
int iImgScarfID,RECT rtScarf, BOOL bIsTop = FALSE);
~BtnAlpha2ScarfStyle();
virtual void Render(HDC& hDC);
protected:
IImageEx m_objAlphaImgScarf;
RECT m_rtScarf;
BOOL m_bIsTop;
};
//-------------------------------------------------------------------------------------------------------
#pragma once
#include "../UiModel/BaseVisitor.h"
class EventLBDown: public BaseVisitor
{
public:
EventLBDown(POINT pt);
virtual ~EventLBDown(void);
virtual BOOL VisitBtnEx(BtnEx* pBtn);
virtual BOOL VisitCheckEx(CheckEx* pCheck);
int GetHitID();
private:
POINT m_ptPos;
int m_iFouceID;
};
class EventLBUp: public BaseVisitor
{
public:
EventLBUp(POINT pt);
virtual ~EventLBUp(void);
virtual BOOL VisitCompositionExStart(CompositionEx* pCptEx);
virtual BOOL VisitBtnEx(BtnEx* pBtn);
virtual BOOL VisitCompositionExEnd(CompositionEx* pCptEx);
int GetHitID();
private:
vector<BtnEx*> m_vpBtn;
POINT m_ptPos;
int m_iFouceID;
};