|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
//文件 LayerName.h
|
|
|
//主要功能:
|
|
|
//
|
|
|
//程序编写: 2005-12-07
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
/**
|
|
|
* 图层名处理辅助类
|
|
|
* 就按 windows 文件路径理解就行了,比如 "Layer:\project\图层1": "Layer" 就叫 ClassName,"project\图层1" 就叫 PathName
|
|
|
*/
|
|
|
class AFX_EXT_CLASS CLayerName
|
|
|
{
|
|
|
public:
|
|
|
CLayerName(void);
|
|
|
CLayerName(CString sname);
|
|
|
virtual ~CLayerName(void);
|
|
|
|
|
|
private:
|
|
|
CString sClassName;
|
|
|
CString name;
|
|
|
CStringArray m_type; // 这里面存储的是路径以反斜杠拆分后的字符串
|
|
|
|
|
|
public:
|
|
|
/**
|
|
|
* 获取不带 ClassName 的路径
|
|
|
*
|
|
|
* \return
|
|
|
*/
|
|
|
CString GetPathName(void);
|
|
|
|
|
|
void SetPathName(CString sname);
|
|
|
|
|
|
/**
|
|
|
* 获取父类路径
|
|
|
*
|
|
|
* \return
|
|
|
*/
|
|
|
CString GetParentPath();
|
|
|
|
|
|
int GetCount(void);
|
|
|
int GetHeadIndex(void);
|
|
|
int GetTailIndex(void);
|
|
|
|
|
|
CString GetPrevPathName(int &index);
|
|
|
CString GetNextPathName(int &index);
|
|
|
CString GetPathName(int index);
|
|
|
CString GetHeadPathName(void);
|
|
|
|
|
|
/**
|
|
|
* 获取最后一个 PathName,即图层真正的名字而非路径
|
|
|
*
|
|
|
* \return
|
|
|
*/
|
|
|
CString GetTailPathName(void);
|
|
|
|
|
|
/**
|
|
|
* 判断是否是当前层名的父级层名
|
|
|
*
|
|
|
* \param sname 传入的层名
|
|
|
* \return
|
|
|
*/
|
|
|
BOOL IsParent(CString sname);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 判断参数sname是否是当前层名子孙图层
|
|
|
*
|
|
|
* \param sname
|
|
|
* \return
|
|
|
*/
|
|
|
BOOL IsChild(CString sname);
|
|
|
|
|
|
/**
|
|
|
* 判断参数sname是否与当前层名的根类别相同
|
|
|
*
|
|
|
* \param sname
|
|
|
* \return
|
|
|
*/
|
|
|
BOOL IsSameClass(CString sname);
|
|
|
|
|
|
/**
|
|
|
* 标准化层名,拆分成 ClassName 和 path
|
|
|
*/
|
|
|
void Standardization(void);
|
|
|
BOOL operator==(CLayerName& ln);
|
|
|
BOOL operator==(CString sLayerName);
|
|
|
|
|
|
/**
|
|
|
* 返回 Class 名
|
|
|
*
|
|
|
* \return
|
|
|
*/
|
|
|
CString GetClassName(void);
|
|
|
|
|
|
void operator=(CString sName);
|
|
|
|
|
|
CString GetAt(int nIndex);
|
|
|
|
|
|
/**
|
|
|
* 返回 Class + 路径 名字
|
|
|
*
|
|
|
* \return
|
|
|
*/
|
|
|
CString GetFullPathName(void);
|
|
|
|
|
|
CString operator[](int nIndex);
|
|
|
};
|
|
|
|
|
|
AFX_INLINE CString CLayerName::GetPathName(void)
|
|
|
{
|
|
|
return name;
|
|
|
}
|
|
|
|
|
|
AFX_INLINE CString CLayerName::GetClassName(void)
|
|
|
{
|
|
|
return sClassName;
|
|
|
}
|
|
|
|
|
|
AFX_INLINE CString CLayerName::GetAt(int nIndex)
|
|
|
{
|
|
|
ASSERT(nIndex>=0 || nIndex<m_type.GetCount());
|
|
|
return m_type[nIndex];
|
|
|
}
|
|
|
|
|
|
AFX_INLINE CString CLayerName::GetFullPathName(void)
|
|
|
{
|
|
|
CString str;
|
|
|
str.Format(_T("%s:\\%s"),GetClassName(),GetPathName());
|
|
|
return str;
|
|
|
}
|