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.

135 lines
2.3 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//////////////////////////////////////////////////////////////////////////////
//文件 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;
}