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