#pragma once #include "SigmaDoc.h" #pragma pack(1) //名称 类型 层位 实际长度 面积 方位角 xyz struct ElementInfo { wchar_t * name; // [50]; int lenOfName; int elementType; wchar_t * layerName; //[50]; int lenOfLayerName; wchar_t * markName;// [50]; int lenOfMarkName; double length; double area; double azimuth; //方位角 double x; double y; double z; }; #pragma pack() class SelectionDrawer; //没有必要继承CItem class CFindReplacement { public: CFindReplacement(CSigmaDoc * ppDoc); virtual ~CFindReplacement(void); void Start(); void FindAll(CString strFindWhat, BOOL bMatch, BOOL bCapitalLower); //返回替换图元名称的数量 int ReplaceAll(CString strOld, CString strNew, BOOL bMatch, BOOL bCapitalLower); //0--找到了 1--第一次查找 但没找到 2--已经搜索完了 int FindNext(CString strFindWhat, BOOL bMath, BOOL bCapitalLower , int elementType=0, BOOL onlyEditable=true); BOOL Replace(CString strOld, CString strNew, BOOL bMatch, BOOL bCapitalLower); //获得查找全部操作找到的图元的个数 int GetCountOfElement(); void Draw(CDC * pCDC); BOOL GetElement(int id, ElementInfo * eleInfoOut); POSITION GetCurrentPostion() { return m_posCurrent; } //true-替换成功 false-替换失败 protected: void ExtendOne(POSITION pos); BOOL FindNextOnly(CString strFindWhat, int elementType = 0, BOOL onlyEditable = true); BOOL Replace(POSITION pos, CString strOld, CString strNew, void* pActionList); protected: CSigmaDoc * m_pDoc; SelectionDrawer * m_selectionDrawer; POSITION m_posCurrent; //POSITION m_posFind; BOOL m_bAddInResultList; BOOL m_bMatch; //是否全字匹配 BOOL m_bCapitalLower; //是否区分大小写 BOOL m_numberFound; CPositionList m_findResult; //用于查找全部 };