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

📄 elementbase.h

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

#if !defined(AFX_ELEMENTBASE_H__6DE942B7_2EFE_441B_ADAC_62075171D57B__INCLUDED_)
#define AFX_ELEMENTBASE_H__6DE942B7_2EFE_441B_ADAC_62075171D57B__INCLUDED_

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

enum eSnapType 
{
	e_Snap_Contre,//圆心
	e_Snap_Near,//最近点
	e_Snap_KeyPoint,//关键点
	e_Snap_MidPoint,//中点
	e_Snap_PlumbPoint,//垂点
};

class CDrawCoord;
class CElementArray;
class CElementBase  
{
public:
	CElementBase();
	virtual ~CElementBase();
public:
	//计算元素区域
	virtual CRect2D CalculateElementRect() =0;
	//在图上绘元素
	virtual void DrawElement(CDrawCoord * pDrawCorrd , DWORD DrawType) = 0;
	//创建一个新自己
	virtual CElementBase * CreateMe() = 0;
	//保存
	virtual BOOL Write (FILE * pf);
	//读取
	virtual BOOL Read (FILE * pf);
	//面积
	virtual double GetAera();
	//-- {AddDecl: 407} region.unprotectedFunction [777..832]
	virtual double GetLength();
	//////////////////////////////////////////////////////////////////////////
	//未完成的操作
	//获取属性
	//打散
	virtual CElementArray * Break() = 0;
	//切割
	virtual Cut(CElementArray * pInsideArray 
		, CElementArray * pOutsideArray
		, CRect2D & cutrect ) = 0;
	//捕捉
	virtual CPoint3D Snap ( eSnapType snaptype ) = 0;
	//复制
	virtual CElementBase * CopyMe () = 0;
	//平移
	//缩放
	//旋转
	virtual Transform ( CMatrix3D trans ) = 0;

	//////////////////////////////////////////////////////////////////////////
	//
	//基本的操作
	//
		//////////////////////////////////////////////////////////////////////////
	virtual wchar_t * GetClassName();
	virtual void  SetClassName( wchar_t * newClassName );
	// 类索引
	virtual int GetClassIndex();
	virtual void SetClassIndex( int nIndex ) ;
	//线型名
	virtual wchar_t * GetLineName () ;

	virtual void  SetLineName( wchar_t * newLineName );;
	//着色
	virtual DWORD GetLineColor();
	virtual void SetLineColor( DWORD dwColor );
	//线宽
	virtual UINT GetLineWidth();
	virtual void SetLineWidth( UINT uWidth );
	//层名
	virtual wchar_t * GetLayerName ();
	virtual void  SetLayerName( wchar_t * newLayerName );
	//编码
	virtual UINT GetCode();
	virtual void SetCode( UINT uCode );
	//范围
	virtual CRect2D GetElementRect ();
	//属性
	virtual void GetProperties( DWORD * m_GroupID , DWORD * m_AssociatedID
		, DWORD * m_Smybol);
	virtual void SetProperties( DWORD * m_GroupID , DWORD * m_AssociatedID
		, DWORD * m_Smybol);
		
	//状态
	virtual BOOL GetHbitus ( eElementHbitus eHbitus );
	virtual void SetHbitus ( eElementHbitus eHbitus , BOOL value );
public:
	int			m_ClassIndex;//动态
	UINT		m_LineStyleIndex;//动态
	UINT		m_LayerIndex;//动态
	
	CRect2D		m_Rect;
	//在文件中的位置
	UINT		m_FileNumber;
	DWORD		m_FilePos;
protected:
	
	wchar_t		m_ClassName[MAX_CLASS_NAME_LENGTH];
	//类索引
	//线型名
	wchar_t		m_strLineName[MAX_LINE_NAME_LENGTH];
	//层名
	wchar_t		m_LevelName[MAX_LAYER_NAME_LENGTH];
	//编码
	UINT		m_nCode;
	//颜色
	DWORD		m_LineColor;
	//线宽
	UINT		m_LineWidth;
	//组ID
	DWORD		m_GroupID;
	//关联
	DWORD		m_AssociatedID;
	//数据标志
	//1关联、2显示、3锁定、4可捕捉、5删除、6修改过、7闭合、8填充
	DWORD		m_Smybol;
	
	//元素私有数据
	UINT		m_UserBufferLength;	
	char *		m_pUserBuffer;
};

#endif // !defined(AFX_ELEMENTBASE_H__6DE942B7_2EFE_441B_ADAC_62075171D57B__INCLUDED_)

⌨️ 快捷键说明

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