QLayerObj.h
上传用户:oybseng
上传日期:2015-04-27
资源大小:7831k
文件大小:3k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. // QLayerObj.h: interface for the CQLayerObj class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "afxtempl.h"
  5. #include "QBaseObj.h"
  6. #if !defined(AFX_QLAYEROBJ_H__870D3AE4_EDC2_4DDF_B429_A8855880C61D__INCLUDED_)
  7. #define AFX_QLAYEROBJ_H__870D3AE4_EDC2_4DDF_B429_A8855880C61D__INCLUDED_
  8. #if _MSC_VER > 1000
  9. #pragma once
  10. #endif // _MSC_VER > 1000
  11. class CBoundaryRect;
  12. class CQCoordSys;
  13. class CQSelObjManager;
  14. class CQLayerObj;
  15. //////////////////////////////////////////
  16. ///***************CQGIS****************///
  17. ///类    名:CQLayerObj
  18. ///基    型:CObject
  19. ///说    明:图层类对象
  20. ///***************CQGIS****************///
  21. //////////////////////////////////////////
  22. class AFX_EXT_CLASS CQLayerObj : public CObject
  23. {
  24. public:
  25. CQLayerObj();
  26. virtual ~CQLayerObj();
  27. CQLayerObj(CQLayerObj & Layer);
  28. void Copy(CQLayerObj & Layer);
  29. public:
  30. void SetLayerID(long lLayerID);
  31. long GetLayerID();
  32. void SetMapID(long lMapID);
  33. long GetMapID();
  34. void SetLayerName(CString szLayerName);
  35. CString GetLayerName();
  36. void SetLayerDis(CString szLayerDis);
  37. CString GetLayerDis();
  38. void SetShowFlag(BOOL bShowed);
  39. BOOL GetShowFlag();
  40. void SetDeleteFlag(BOOL bDeleted);
  41. BOOL GetDeleteFlag();
  42. void SetEditFlag(BOOL bCanEdit);
  43. BOOL GetEditFlag();
  44. BOOL IsEmpty();
  45. void InitLayerBoundary();             // 初始化图层对象的边界矩形
  46. void CalculateBoundary(CBoundaryRect * pRect);
  47. void AddObject(CQBaseObj * pObj);
  48. void RemoveObject(CQBaseObj * pObj);  // 没有移除指针
  49. void Deleteobject(CQBaseObj * pObj);
  50. inline int GetObjCount();
  51. CQBaseObj * GetObj(int nIndex);       //根据索引好获取对象指针
  52. CQBaseObj * FindObj(long lObjID);     //根据对象的ID查找其对象指针
  53. inline int GetObjIndex(long lObjID);  //根据对象的ID查找对象在列表中的索引
  54. inline void ClearAll();               //清空图元列表
  55. CString  VarToStr();
  56. virtual void Save(const char * sz);   //存储图层
  57. BOOL Open(const char * sz);           //打开图层
  58. virtual void Serialize(CArchive & ar);//序列化
  59. CBoundaryRect * GetBoundary();
  60. virtual void Display(CQCoordSys * pCoorSys,CDC *pDC,int nDrawMode, int nSpecialMode,COLORREF* pColor);
  61. virtual void Move(double dx,double dy);
  62. virtual void Rotate(CQPoint & pt,double fRotateAngle);
  63. //点选对象
  64. virtual CQBaseObj * Select(CQSelObjManager * pSelObjs,CQCoordSys *pCoorSys,CQPoint & pt, double fEffectedDistance);
  65. virtual int Select(CQSelObjManager * pSelObjs,CQCoordSys * pCoorSys,CBoundaryRect & rectSel);
  66. virtual CQBaseObj * SingleSelect(CQSelObjManager * pSelObjs,CQCoordSys * pCoordSys,CQPoint & pt,double fEffecttedDistance,int nSelectObjType = 0);
  67. void WriteObjsToFile(CFile * pFile);
  68. void ReadObjsFromFile(CFile * pFile);
  69. virtual void WriteToFile(CFile * pFile);
  70. virtual void ReadFromFile(CFile * pFile);
  71. void DeleteAllObjsHavaDeletedflag();
  72. long SetLayerIDByRand();
  73. void XFlex(double dcp_x,double dFlex);
  74. void YFlex(double dcp_y,double dFley);
  75. protected:
  76. CTypedPtrArray<CObArray,CQBaseObj *> m_ObjList; //存放实体对象的列表
  77. long m_lLayerID;   // 当前图层ID
  78. long m_lMapID;     // 当前图幅ID
  79. CString m_szLayerName;  // 图层名称
  80. CString m_szLayerDis;   // 图层说明信息
  81. BOOL m_bShowed;         // 显示状态
  82. BOOL m_bDeleted;        // 删除状态
  83. BOOL m_bCanEdited;      // 编辑状态
  84. CBoundaryRect m_Boundary;
  85. };
  86. #endif // !defined(AFX_QLAYEROBJ_H__870D3AE4_EDC2_4DDF_B429_A8855880C61D__INCLUDED_)