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