⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elementmanager.h

📁 这是一个程序的一般架构方法
💻 H
字号:
// ElementManager.h: interface for the CElementManager class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ELEMENTMANAGER_H__4B4062A9_9124_442C_8795_0B66A449A080__INCLUDED_)
#define AFX_ELEMENTMANAGER_H__4B4062A9_9124_442C_8795_0B66A449A080__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

typedef void (*CALLBACKProElement)( CElementBase * pElement , void * pPrarm );

struct ElementXOrder
{
	double KeyValue;
	CElementBase * pElementBase;
};

enum eElementNextType
{
	Element_Next_Only_Head = 0,
	Element_Next_All,
};

enum eAppendElementType
{
	Append_Element_All = 0,
	Append_Element_Only_Son,
	Append_Element_Nont,
		
};
class CElementArray
{
public:
	struct Head
	{
		CElementArray * pHeadElementBase;
		CElementArray * pNextChildElementBase;
		CElementArray * pNextBrotherElementBase;
		CElementArray * pPreviousElementBase;
	} m_h;

	CElementBase * m_pElementBase;
	
	CElementArray * SearchElement( CRect2D & rect , eElementSearchType SearchType );
	//是元素的创建者
	BOOL AddElement( CElementBase * pElementBase );
	//不是元素的创建者
	BOOL InsertElement( CElementBase * pElementBase );
	//删除元素
	BOOL RemoveElement( CElementBase * pElementBase );
	//清除内存
	void Free();
	//回调每一个元素
	void ProElement( CALLBACKProElement * pCallBack );
	//获取列表下一个元素
	CElementArray * GetElementNext( eElementNextType eNextType = Element_Next_All);
	//合并元素数组
	void Append( CElementArray * ElementArray , eAppendElementType isChengeMaster = Append_Element_Only_Son );
	//加一个兄弟元素数组
	void InsertBrotherEleArray ( CElementArray * pElmArray );
	//加一个子元素数组
	void InsertChildEleArray ( CElementArray * pElmArray );
	//返回一个元素的范围,或一组元素的范围
	//一个元素所表复杂元素
	CRect2D GetEleArrayRect(BOOL isOne = TRUE );
protected:
	void GetEleArrayChildRect( CRect2D & rect );
	void GetEleArrayBrotherRect(CRect2D & rect );
		
};

class CElementManager  
{
public:
	CElementManager();
	virtual ~CElementManager();
public:
	BOOL AddElement( CElementBase * pElement );
	BOOL RemoveElement( CElementBase * pElement );
	CElementArray * SearchElement( CRect2D & rect , eElementSearchType SearchType );
	OrderArray <double , CElementManager> m_OrderXElementArray;
	
};

#endif // !defined(AFX_ELEMENTMANAGER_H__4B4062A9_9124_442C_8795_0B66A449A080__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -