////////////////////////////////////////////////////////////////////////////// //文件: Item.h //主要功能: // //程序编写: 2006-12-07 // // ///////////////////////////////////////////////////////////////////////////// #pragma once #include "DrawOperator\xydc.h" #include "DrawOperator\one.h" #include "ItemBase.h" #include "ItemView.h" #include "ItemPrint.h" //其它类型 #define ITEM_STATE 1003 //状态 #define ITEM_ERASER 1004 //橡皮 #define ITEM_HYPERLINK 1005 //超级联接 #define ITEM_SELECT 1006 //元素选择 #define ITEM_RECTANGLE 1007 //画矩形 #define ITEM_CIRCLE 1008 //画圆 #define ITEM_GRID 1009 //坐标网 #define ITEM_MATRIX_MARK 1010 //矩阵符号 #define ITEM_CURVE 1011 //曲线 #define ITEM_LINK_CURVE 1012 //连接曲线 #define ITEM_SOLID 1013 //填充区域 #define ITEM_PUT_INTO_CURVE 1014 //内插曲线 #define ITEM_BREAK_CURVE 1015 //打断曲线 #define ITEM_IMAGE_TRACE 1016 //图像矢量化 #define ITEM_EXTEND_CURVE 1017 //曲线延伸 #define ITEM_TRIM_CURVE 1018 //剪切曲线 #define ITEM_PROPORTION 1019 //比例尺 #define ITEM_LINK_POINT 1020 //连接点成曲线 #define ITEM_2POINT_TO_RECT 1021 //连接两点成矩形 #define ITEM_3POINT_TO_RGN 1022 //连接三点成四边形 #define ITEM_ARC 1023 //插入弧、弦、饼 #define ITEM_EQUILATERAL 1024 //等边多边形 #define ITEM_IMAGE 1025 //图像 #define ITEM_MXN 1026 //SEGY类数据 #define ITEM_INSERT_DRAW 1027 //新符号 #define ITEM_POINT 1028 //点增加 #define ITEM_FRAME 1029 //边框 #define ITEM_TEXT 1030 //文字 #define ITEM_MESH 1031 //MESH文件 #define ITEM_ELLIPSE 1032 //椭圆 #define ITEM_NET 1034 //经纬度网 #define ITEM_REDUNDANT 1035 //曲线冗余 #define ITEM_SCALE_EMBELLISH 1036 //放缩比例 #define ITEM_SCALE_OBJECT 1037 //放缩元素 #define ITEM_SAVE_TO_MARK 1038 //保存为符号 #define ITEM_DELETE 1039 //删除 #define ITEM_FIND 1040 //查找\替换 #define ITEM_MATH_FIND 1041 //数学发现 #define ITEM_CLIPBOARD 1042 //剪切板COPY与PAST #define ITEM_CURVE_PROCESS 1043 //曲线处理类 #define ITEM_POINT_PROCESS 1044 //点处理 #define ITEM_TEXT_EDIT 1045 //对文本数据的批量设置 #define ITEM_EXPRESSION 1046 //对x,y,z,l进行表达式计算 #define ITEM_ARC_EDIT 1047 //对弧、弦、饼进行编辑 #define ITEM_SELECT_ELEMENT 1048 //选择一个元素类 #define ITEM_SELECT_GOTO 1049 //选择转移 #define ITEM_CALIBRATE 1050 //校正 #define ITEM_SECTION 1051 //Section数据 #define ITEM_CHANGE_COLOR 1052 //改变颜色 #define ITEM_OPEN_FILE 1053 //打开文件 #define ITEM_BK_GRID 1054 //背景网格 #define ITEM_CURVE_EDIT 1055 //曲线编辑 #define ITEM_POINT_EDIT 1056 //点编辑 #define ITEM_WMF 1058 //WMF和EMF文件 #define ITEM_ALIGN 1059 //元素对齐处理 #define ITEM_CALIBRATE_LINE 1060 //直线校正 #define ITEM_ROTATE 1061 //旋转 #define ITEM_TOOLTIP 1062 //信息提示 #define ITEM_XPOINT_EDIT 1063 //x点编辑 #define ITEM_OLE 1064 //OLE元素 #define ITEM_INSERT_TABLE 1065 //插入表格 #define ITEM_STAT_ELEMENTS 1066 //统计元素 #define ITEM_MESH_PROCESS 1067 //曲面计算 #define ITEM_CUT_OUT 1068 //剪裁外部 #define ITEM_MATRIX_COPY 1069 //矩阵复制 #define ITEM_CURVE_INNAME 1070 //编辑曲线内部名字 #define ITEM_CURVE_NAME_AUTO 1071 //根据步长自动设置等值线名称 #define ITEM_CURVE_NAME_EXPRESSION 1072 //对曲线名称进行表达式运算 #define ITEM_MAKE_MARK 1073 //符号制作 #define ITEM_INSERT_OLD 1074 //老符号 #define ITEM_OTHER 1075 //其它的一些处理 #define ITEM_GET_RANGE 1076 //拾取区域 #define ITEM_MARK 1077 //导入编辑 #define ITEM_BREAK_CURVE_DIRECT 1078 //打断曲线 #define ITEM_SCALE 1079 //通过定置两条任意曲线拉伸元素 #define ITEM_CUT_IN 1080 //剪裁内部 #define ITEM_CURVE_CENTER_NAME 1081 //编辑曲线内部名字 #define ITEM_COPY_AS_IMAGE 1082 // 拷贝图片 #define ITEM_SCALE_RULER 1083 //标尺编辑 #define ITEM_TRACE_TO_LOG 1084 //矢量化数据转换为测井数据 #define ITEM_CHANGE_LAYER 1085 //改变类别 #define ITEM_CROSSPOINT_EDIT 1086 //十字点编辑 #define ITEM_CROSSPOINT 1087 //十字点插入 #define ITEM_TWOPOINT_EDIT 1088 //分数点编辑 #define ITEM_TWOPOINT 1089 //分数点插入 #define ITEM_IMAGE_PROCESS 1090 //图像处理 #define ITEM_SOLID_LINK 1091 //连接曲线填充区域 #define ITEM_CURVE_Z_SETTING 1092 //根据步长自动设置曲线Z值 #define ITEM_BREAK_CONTOUR 1093 //打断等值线(结合逆断层)为了给断层内的等值线上虚线 #define ITEM_PATH_FILL 1094 //路径充填 #define ITEM_WELL 1095 //添加井 #define ITEM_ADD_WELL 1096 //编辑井 #define ITEM_CHART 1097 //添加图版 #define ITEM_CHARTEX 1098 //统计图 #define ITEM_CHARTEX_EDIT 1099 #define ITEM_CREATE_CONTOUR 1100 // 生成等值线 #define ITEM_SET_CONTOUR_NAME 1101 // 设置等值线名称 //#define ITEM_OILWATER 1098 //#define ITEM_HISTORGRAM 1099 //#define ITEM_RTPORLOG 1100 //#define ITEM_RWASP 1101 //#define ITEM_LIGASCROSS 1102 //#define ITEM_CROSS 1103 #define ITEM_REGIONSELECT 1104 #define ITEM_ADD_FACIES 1105 #define ITEM_ADD_STRATUM 1106 //添加地层对比图 #define ITEM_TURTLE 1107 //绘制龟背图 #define ITEM_SOLID_AUTO 1108 //自动充填 #define ITEM_ADD_STATISPLATE 1109 #define ITEM_PLATE 1110 #define ITEM_PLATEEDIT 1111 #define ITEM_ADD_WELLDATAGRAPH 1112 #define ITEM_WELLDATAGRAPH 1113 //产能柱图 #define ITEM_INSERT_LABEL_RECT 1116 // 插入标注 #define ITEM_LABEL_RECT_EDIT 1117 // 编辑标注 #define ITEM_INSERT_FAULTLINE 1118 // 插入断层 #define ITEM_ATTACH_CURVE 1119 // 绑定曲线,自动修改 #define ITEM_PICK_TWO_CURVE 1120 // 拾取两条曲线计算面积及体积 #define ITEM_BLOCK 1121 //块元素 #define ITEM_WELL_GROUP 1122 // 井组 #define ITEM_WELL_GROUP_EDIT 1123 // 井组 #define ITEM_WELL_BRANCH_CURVE_EDIT 1124 // 井支线编辑 #define ITEM_COPY_AS_IMAGE_EX 1201 // 高级拷贝图片 #define ITEM_COPY_AS_IMAGE_POLYGON 1202 // 多边形拷贝图片 #define ITEM_MEASURE 1203 // 测量 #define ITEM_WELLPOLE 1300 #define ITEM_TRACKIN 1301 #define ITEM_TRACK 1302 //class CDFDrawProDoc; //class CDFDrawProView; #include "atltypes.h" #include "ItemBase.h" //#include ".\propertygriditemadd.h" //#include ".\CustomItemCombo.h" //#include ".\customitemscalewizard.h" //#include ".\customitemmark.h" //#include ".\customitemmeshcolor.h" //#include ".\customitemembellish.h" //using namespace NOptionItem; class CSigmaView; namespace NItem { class CItem : public CItemBase { public: CItem(CSigmaDoc * ppDoc); virtual ~CItem(void); public: //属性项 virtual void InitializationMul(void); //初始化参数 static CString m_strLayerMul; //为了多个相同元素的层名 static CHyperlinkMulti* m_pHyperlinkMul; int GetStatusCode() const; const char *GetStatusText() const; CString GetGridItemComboLayer(void); CSigmaDoc * GetDoc(void); CSigmaView* GetView(void) { return (CSigmaView*)GetDrawView(); } virtual void SetPos(POSITION pos); bool IsEditState(void); //返回true为编辑状态,否则为增加状态 CItem* GetOwner() { return m_pItemOwner; } void SetOwner(CItem* pItemOwner) { m_pItemOwner = pItemOwner; } virtual POSITION GetPos(void); int GetHandleIndex(void); void SetHandleIndex(int nIndex); BOOL IsModified(void); virtual void SetModifiedFlag(BOOL bModified); int GetSelectSubMenu(void); //int ShowPropertyPane(int nShow); //返回显示之前的状态(0=Close, 1=Show, 2=Hide) void DrawCurveHandle(CXyDC* pDC, CCurveEx* pCurve, COLORREF color, int nMode, BOOL bDrawLine, int penWidth=1); dfPoint GetShiftDownPoint(double begin_x, double begin_y, double end_x, double end_y); POSITION FindCurve(CCurveEx* pCurve); //发现pDoc->GetDraw()中的曲线 POSITION AddElement(void* pValue, int type, bool bUpdateView=true, bool bWithUndo=true); POSITION InsertElementBefore(POSITION pos, COne* pNewOne, BOOL bUpdateView=TRUE); POSITION InsertElementAfter(POSITION pos, void * pElement, int nType, BOOL bUpdateView = TRUE); POSITION AddTailOne(COne* pOne); bool IsUpdatePropertyGrid(void); void SetUpdatePropertyGridState(bool bUpdate); void SetBackGroundDC(CDC* pDC) { m_pBackGroundDC = pDC; } void Invalidate(void); CUnitTransform& GetUnitMode(); int GetUnit(); //获得当前显示单位 CUnitTransform m_unitMode; //根据设置的比例在打印单位与实际单位间变换 CRect m_client; BOOL IsNestItem() { return m_bNestItem; } //ggff virtual void SetItem(CItem* pItem) {} //ggff2025 virtual BOOL OnSetCursor(CPoint pt, int& handle) { handle = -1; return FALSE; }; virtual CItem* GetItem(void) { return this; } virtual void DeleteItem(void) {} protected: void DeleteElement(POSITION pos); //CXTPPropertyGridItem* FindItem(CXTPPropertyGridItem* pItem, UINT nID); void SetStatusCode(int code); void SetStatusText(const char * pText); void ClearStatus(); //当前选择点的索引号,为了编辑曲线.... int m_nCurHandleIndex; BOOL m_bModifiedFlag; //是否修改了当前的曲线..... protected: POSITION position; //是编辑状态,还是增加状态NULL CItem* m_pItemOwner; //为了调用OnInplaceButtonDown时的归属 CDC* m_pBackGroundDC; private: bool bUpdatePropertyGrid; //是否充填属性 int m_nStatusCode; char *m_pStatusText; protected: BOOL m_bNestItem; ////是否嵌套的item //ggff }; class CItemViewEx : public CItemView { public: CItemViewEx(void); CItemViewEx(CSigmaDoc * ppDoc); virtual ~CItemViewEx(void); virtual BOOL GetViewRange(CRect8& rect); //获得要全图显示的范围 }; class CItemPrintEx : public CItemPrint { public: CItemPrintEx(CSigmaDoc * ppDoc); ~CItemPrintEx(void); virtual void AfterEndPrinting(CDC* pDC, CPrintInfo* pInfo); }; }; using namespace NItem;