// CDrawObj.h: interface for the CDrawObj class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_CDRAWOBJ_H__4539C1EB_10FD_40B5_9BBC_22C008CEAF0F__INCLUDED_) #define AFX_CDRAWOBJ_H__4539C1EB_10FD_40B5_9BBC_22C008CEAF0F__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "..\ChineseRes\ChineseRes\resource.h" #include "ReportColPage.h" //#include "Picture.h" #include "ImageEx.h" #include "shockwaveflash.h" class CGraph; struct LAYOUTSTRUCT { CRect rect; // m_rect (Normalized); int nX1; // m_rect.left (Normalized); int nX2; // m_rect.right (Normalized); int nY1; // m_rect.top (Normalized); int nY2; // m_rect.bottom(Normalized); int nXX; // m_rect.Width(); int nYY; // m_rect.Height(); int nX0; // 中心点X坐标; int nY0; // 中心点Y坐标; BOOL bHoriz; // 方向标志; BOOL bXInvert; // X方向反转标志; BOOL bYInvert; // Y方向反转标志; int nMinSize; // 可画的最小尺寸; }; // 定义操作 //---------------------------------------------- CAction ----------- class CAction:public CObject { public: int m_nActionType; CString m_strVariant; CString m_strActionValue; CString m_strPicPath; DECLARE_SERIAL(CAction); CAction(); virtual CAction* Clone(void); virtual void Serialize(CArchive& ar); CAction& operator=(CAction& action); }; ////////////////////////////////////////////////////////////////////////// //---------------------------------------------- CDrawObj ----------- class CDrawObj:public CObject { public: DECLARE_SERIAL(CDrawObj); CDrawObj(); public: CView* m_pView; CRect m_rect; public: static CStringArray drawsName; static CPtrArray drawsRuntimeClass; static void RegisterClass(CString strName,CRuntimeClass* pRuntimeClass); public: COLORREF m_clrFore; // 前景色 COLORREF m_clrLine; // 线色 COLORREF m_clrBack; // 背景色 COLORREF m_clrFill; // 填充色 LOGFONT m_logfont; // 字体 CString m_strLineType; // 线型 int m_nLineWidth; // 线宽 CString m_strCaption; // 静态文本 BOOL m_bVariant; // 是否是变量r BOOL m_bDynShow; // 是否动态显示 CString m_strDynShow; // 动态显示条件 BOOL m_bLocked; BOOL m_bAligned; // 用来等距排列的标志位 // 动态参数 COLORREF m_clrDynFore; // 前景色 CString m_strDynForeCon; COLORREF m_clrDynBack; CString m_strDynBackCon; COLORREF m_clrDynLine; CString m_strDynLineCon; BOOL m_bDynFore; BOOL m_bDynBack; BOOL m_bDynLine; int m_nFillMode; CString m_strHoriPos; CString m_strHoriSize; CString m_strVertiPos; CString m_strVertiSize; BOOL m_bVertiSize; BOOL m_bVertiPos; BOOL m_bHorizSize; BOOL m_bHorizPos; int m_nHorAlign; int m_nVerAlign; // 动态值 CRect m_rctCurrent; COLORREF m_clrCurrentFore; COLORREF m_clrCurrentBack; COLORREF m_clrCurrentLine; CString m_strCurrentCaption; BOOL m_bShow; float m_fCurrentValue; BOOL m_bShowtemp;//chn add 为了GIF,flasg,OCX的隐藏和显示 // 动作属性 CAction m_downAction; CAction m_upAction; CAction m_moveAction; BOOL m_bOnButtonUp; BOOL m_bOnButtonDown; BOOL m_bOnMove; // BOOL m_bHisFreshed; // 组合内动态缩放 double m_dbLeftRate; double m_dbRightRate; double m_dbTopRate; double m_dbBottomRate; public: static BOOL bRuning; // 是否处于运行状态; BOOL m_bModifyMore; // 是否是编辑多个 public: CDrawObj& operator=(CDrawObj& drawObj); virtual CDrawObj* Clone(void); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(void); virtual BOOL OnAttrib(CPropertySheet& sheet); virtual void Draw(CDC* pDC); void DrawText(CDC* pDC); virtual bool Fresh( CRect &RECT ); void DrawHKedu(CDC* pDC, CRect rect, int nKedu, COLORREF clrKedu); void DrawVKedu(CDC* pDC, CRect rect, int nKedu, COLORREF clrKedu); void DrawArcKedu(CDC* pDC, CRect rect, int nStartAngle, int nEndAngle, int nKedu, COLORREF clrKedu); public: LOGBRUSH GetBrush(); void FillBack(CDC* pDC); void DrawFrame(CDC* pDC); void ProcessAction(int type); int GetPenStyle(CString penType); void Layout(BYTE Sharp,LAYOUTSTRUCT* pLayout); virtual int GetHandleCount(void); virtual CPoint GetHandle(int nHandle); CRect GetHandleRect(int nHandle); virtual HCURSOR GetHandleCursor(); virtual void MoveTo(CRect rect); virtual void MoveHandleTo(int nHandle, CPoint point); virtual void DrawTracker(CDC* pDC); virtual int HitTest(CPoint point); virtual BOOL Intersects(CRect rect); virtual void Invalidate(void); }; typedef CTypedPtrList CDrawObjList; //---------------------------------------------- CDrawComposite --- class CDrawComposite:public CDrawObj { public: DECLARE_SERIAL(CDrawComposite); CDrawComposite(); CDrawComposite(CDrawObjList &ObjList); ~CDrawComposite(); public: CDrawComposite& operator=(CDrawComposite& drawObj); virtual CDrawObj* Clone(void); virtual void Serialize(CArchive& ar); virtual void Draw(CDC* pDC); virtual void MoveTo(CRect rect); public: CDrawObjList m_ObjList; }; //---------------------------------------------- CDrawTLine ------- class CDrawTLine:public CDrawObj { public: DECLARE_SERIAL(CDrawTLine); CDrawTLine(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawLine ------- class CDrawLine:public CDrawObj { public: DECLARE_SERIAL(CDrawLine); CDrawLine(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawText -------- class CDrawText:public CDrawObj { public: DECLARE_SERIAL(CDrawText); CDrawText(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void DrawText(CDC* pDC); virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawRect -------- class CDrawRect:public CDrawObj { public: DECLARE_SERIAL(CDrawRect); CDrawRect(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawRoundRect -------- class CDrawRoundRect:public CDrawObj { public: DECLARE_SERIAL(CDrawRoundRect); CDrawRoundRect(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawOval -------- class CDrawOval:public CDrawObj { public: DECLARE_SERIAL(CDrawOval); CDrawOval(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); //virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawPie -------- class CDrawPie:public CDrawObj { public: DECLARE_SERIAL(CDrawPie); CDrawPie(); int m_nStartAngle; int m_nSweepAngle; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawFan -------- class CDrawFan:public CDrawObj { public: DECLARE_SERIAL(CDrawFan); CDrawFan(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual bool Fresh( CRect &RECT ); virtual BOOL OnAttrib(CPropertySheet& sheet); public: int m_nStep; bool m_bComputed; BOOL m_bRun; CPoint tagPoint[8]; CString m_strLogic; }; //---------------------------------------------- CDrawArc -------- class CDrawArc:public CDrawObj { public: DECLARE_SERIAL(CDrawArc); CDrawArc(); int m_nStartAngle; int m_nSweepAngle; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawPoly -------- class CDrawPoly:public CDrawObj { public: DECLARE_SERIAL(CDrawPoly); CDrawPoly(); ~CDrawPoly(); int m_nPoints; int m_nAllocPoints; CPoint* m_points; public: void AddPoint(const CPoint& point); BOOL RecalcBounds(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual void MoveTo(CRect rect); virtual int GetHandleCount(); virtual CPoint GetHandle(int nHandle); virtual void MoveHandleTo(int nHandle, CPoint point); }; //---------------------------------------------- CDrawMLine -------- class CDrawMLine:public CDrawPoly { public: DECLARE_SERIAL(CDrawMLine); CDrawMLine(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawArrow ------- class CDrawArrow:public CDrawObj { public: DECLARE_SERIAL(CDrawArrow); CDrawArrow(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); void DrawArrow(CDC* pDC, CRect rect, BYTE Direction,COLORREF clrArrow ); }; //---------------------------------------------- CDrawButton ------ class CDrawButton:public CDrawObj { public: DECLARE_SERIAL(CDrawButton); CDrawButton(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawBtnRadio ------ class CDrawBtnRadio:public CDrawObj { public: DECLARE_SERIAL(CDrawBtnRadio); CDrawBtnRadio(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawBtnCheck ------ class CDrawBtnCheck:public CDrawObj { public: DECLARE_SERIAL(CDrawBtnCheck); CDrawBtnCheck(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDraw3dCircle ------ class CDraw3dCircle:public CDrawObj { public: DECLARE_SERIAL(CDraw3dCircle); CDraw3dCircle(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawBreaker ------ class CDrawBreaker:public CDrawObj { public: DECLARE_SERIAL(CDrawBreaker); CDrawBreaker(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawSwitch ------ class CDrawSwitch:public CDrawObj { public: DECLARE_SERIAL(CDrawSwitch); CDrawSwitch(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual bool Fresh( CRect &RECT ); virtual BOOL OnAttrib(CPropertySheet& sheet); public: BOOL m_bRun; CString m_strLogic; }; //---------------------------------------------- CDrawGrid ------ class CDrawGrid:public CDrawObj { public: DECLARE_SERIAL(CDrawGrid); CDrawGrid(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawTable ------ class CDrawTable:public CDrawObj { public: DECLARE_SERIAL(CDrawTable); CDrawTable(); BOOL m_bAddAve; BOOL m_bAddMax; BOOL m_bAddMin; int m_nType; BOOL m_bShowRowHead; CColProList m_colList; public: CString GetColFormat(int col); virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawPipe ------ class CDrawPipe:public CDrawObj { public: DECLARE_SERIAL(CDrawPipe); CDrawPipe(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawZhePipe ------ class CDrawZhePipe:public CDrawObj { public: DECLARE_SERIAL(CDrawZhePipe); CDrawZhePipe(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawYPipe ------ class CDrawYPipe:public CDrawObj { public: DECLARE_SERIAL(CDrawYPipe); CDrawYPipe(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); }; //---------------------------------------------- CDrawBitmap ------ class CDrawBitmap:public CDrawObj { public: DECLARE_SERIAL(CDrawBitmap); CDrawBitmap(); ~CDrawBitmap(); CString m_strDynFile; CString m_strStaticFile; BOOL m_bStretch; BOOL m_bDyn; CString m_strDynCondition; BOOL m_bUseDnyFile; // GDI+ ImageEx* m_image; CString m_sOldFilePath; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual bool Fresh( CRect &RECT ); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); BOOL DisplayBMP(CDC* pDC,int nX1,int nY1,int nXX,int nYY,CString strBMPFile,BOOL bStretch); BOOL DisplayJPG(CDC* pDC,int nX1,int nY1,int nXX,int nYY,CString strJPGFile,BOOL bStretch); BOOL DisplayPNG(CDC* pDC,int nX1,int nY1,int nXX,int nYY,CString strJPGFile,BOOL bStretch); BOOL DisplayGIF(CDC* pDC,int nX1,int nY1,int nXX,int nYY,CString strJPGFile,BOOL bStretch); }; //---------------------------------------------- CDrawGif ------ class CDrawGif:public CDrawObj { public: DECLARE_SERIAL(CDrawGif); CDrawGif(); ~CDrawGif(); // GDI+ ImageEx* m_image; CString m_strDynFile; CString m_strStaticFile; BOOL m_bStretch; BOOL m_bDyn; CString m_strDynCondition; BOOL m_bUseDnyFile; //CPicture m_Picture; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual bool Fresh( CRect &RECT ); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawTransfer ------ class CDrawTransfer:public CDrawObj { public: DECLARE_SERIAL(CDrawTransfer); CDrawTransfer(); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); void DrawCircle(CDC *pDC, POINT origin, int radius); }; //---------------------------------------------- CDrawData ------ class CDrawDatabox:public CDrawObj { public: DECLARE_SERIAL(CDrawDatabox); CDrawDatabox(); public: int m_nFormat; void DrawText(CDC* pDC,CString& strText); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawWatch ------ class CDrawWatch:public CDrawObj { public: DECLARE_SERIAL(CDrawWatch); CDrawWatch(); int m_nLowwer; int m_nUpper; CString m_strVar; LONG m_lAspectN; LONG m_lAspectD; INT HorzRes; INT VertRes; protected: void DrawText(CDC* pDC,CString& strText); public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); void DrawFace(CDC* pDC); }; //---------------------------------------------- CDrawSingleBar ------ class CDrawSingleBar:public CDrawObj { public: DECLARE_SERIAL(CDrawSingleBar); CDrawSingleBar(); protected: void DrawText(CDC* pDC,CString& strText); public: int m_nLowwer; int m_nUpper; float m_fValue; virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawBar --------- class CDrawBar:public CDrawObj { public: DECLARE_SERIAL(CDrawBar); CDrawBar(); public: COLORREF m_clrBar1; COLORREF m_clrBar2; COLORREF m_clrBar3; int m_nLowwer; int m_nUpper; CString m_strVar1; CString m_strVar2; CString m_strVar3; int m_nValue1; int m_nValue2; int m_nValue3; public: int GetBarNum(); virtual bool Fresh( CRect &RECT ); virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void Serialize(CArchive& ar); void DrawBar(CDC* pDC,int data,int x1,int x2,COLORREF clrBar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawCurve --------- class CDrawCurve:public CDrawObj { public: DECLARE_SERIAL(CDrawCurve); CDrawCurve(); public: COLORREF m_clrCurve1; COLORREF m_clrCurve2; COLORREF m_clrCurve3; int m_nLowwer; int m_nUpper; CString m_strVar1; CString m_strVar2; CString m_strVar3; int m_nValue1[60]; int m_nValue2[60]; int m_nValue3[60]; int m_nSecond; public: virtual bool Fresh( CRect &RECT ); virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); void DrawCurve(CDC* pDC, CRect rect, int* data, COLORREF color); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawHisCurve --------- class CDrawHisCurve:public CDrawObj { public: DECLARE_SERIAL(CDrawHisCurve); CDrawHisCurve(); public: COLORREF m_clrCurve1; COLORREF m_clrCurve2; COLORREF m_clrCurve3; int m_nLowwer; int m_nUpper; CString m_strVar1; CString m_strVar2; CString m_strVar3; int m_nValue1[60]; int m_nValue2[60]; int m_nValue3[60]; int m_nSecond; public: virtual bool Fresh( CRect &RECT ); virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); void DrawCurve(CDC* pDC, CRect rect, int* data, COLORREF color); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); }; //---------------------------------------------- CDrawOCX -------- class CDrawOCX:public CDrawObj { public: DECLARE_SERIAL(CDrawOCX); CDrawOCX(); CString m_strOcxPath; int m_nOcxIndex; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void DrawText(CDC* pDC); virtual BOOL OnAttrib(CPropertySheet& sheet); virtual void Serialize(CArchive& ar); virtual bool Fresh( CRect &RECT ); }; //---------------------------------------------- CDrawFlash -------- class CDrawFlash:public CDrawObj { public: DECLARE_SERIAL(CDrawFlash); CDrawFlash(); ~CDrawFlash(); CShockwaveFlash *m_pCtrlFlash; CString m_strFlashPath; bool m_bFlashCreate; public: virtual CDrawObj* Clone(void); virtual void Draw(CDC* pDC); virtual void DrawText(CDC* pDC); virtual void Serialize(CArchive& ar); virtual BOOL OnAttrib(CPropertySheet& sheet); virtual bool Fresh( CRect &RECT ); }; #endif // !defined(AFX_CDRAWOBJ_H__4539C1EB_10FD_40B5_9BBC_22C008CEAF0F__INCLUDED_)