You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.7 KiB
C++

#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; //用于查找全部
};