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

📄 mt.h

📁 超声影像工作站系统可与各种型号的B超、彩超连接
💻 H
字号:
// MT.h

#ifndef	__MT_H__
#define __MT_H__

#define	_COMPATIBLE_VERSION_		114					//	可兼容的最低版本
#define	_THIS_VERSION_				114					//	当前版本

#define PI							3.1415926			//	圆周率
#define ARROW_ANGLE					(PI / 8)			//	箭头标记的张开角度
#define ARROW_LENGTH				15					//	箭头长度
#define CROSS_LENGTH				10					//	交叉线长度
#define MAX_TEXT_LENGTH				100					//	最长的文本标记长度
#define RECORD_LENGTH				sizeof(item)		//	记录长度
//#define	FLASH_TIMER_ID				9999				//	
#define	MAX_MOUSE_POINT				100					//	多边形、折线的端点数目上限

//	->	ACTION
#define ACTION_NOTHING				0					//	没有操作
#define ACTION_DELETE				10					//	删除操作
#define ACTION_ARROW				20					//	箭头操作
#define ACTION_CROSS				30					//	十字叉操作
#define ACTION_TEXT					40
#define	ACTION_SETSTANDARDLENGTH	50
#define ACTION_RECTAREA				60
#define ACTION_LINEDIST				70
#define	ACTION_ANGLE				80
#define	ACTION_CHAOSANGLE			90
#define	ACTION_CHAOSAREA			100
#define	ACTION_GETINFO				110
	#define	ACTION_CHANGABLE			1000
#define	ACTION_LINEDIST2			1010
#define	ACTION_ANGLE2				1020
#define	ACTION_CHAOSANGLE2			1030
#define	ACTION_CHAOSAREA2			1040
//	<-	ACTION

#define	TYPE_LINKHEADER				500
#define	TYPE_NOTHING				501
#define	TYPE_LINE					502
#define	TYPE_START					503
#define	TYPE_END					504
#define	TYPE_ARC					505
#define	TYPE_ARROW					506
#define	TYPE_CROSS					507
#define	TYPE_RECT					510
#define	TYPE_TEXT					520
#define	TYPE_CHAOSAREA				540
#define	TYPE_CHAOSANGLE				550
#define	TYPE_ANGLE					560
#define	TYPE_LINEDIST				570
#define	TYPE_RECTAREA				580
#define	TYPE_STANDARDLENGTH			590
#define	TYPE_BIGPOINT				600

#define	MT_CONTROL_PLAY				0
#define	MT_CONTROL_PAUSE			1
#define	MT_CONTROL_ON				2
#define	MT_CONTROL_OFF				3
#define	MT_CONTROL_REVERSE			4
#define	MT_CONTROL_STOP				5
#define	MT_CONTROL_END				6

#define	MT_SELECT_OFF				0
#define	MT_SELECT_ON				1
#define	MT_SELECT_TURN				2

////////////////////////////////////////////////////////////////////////////////////////////////////
//	测量类
////////////////////////////////////////////////////////////////////////////////////////////////////

struct			FLASH_ARG
{
	BOOL		bLocked;
	HWND		hWnd;
	INT			iDelay;
	INT			iControl;
	VOID*		pInstance;
};

class CMeta
{
public:
	CMeta();
	~CMeta();
	static			BOOL InitMeta();
	FLASH_ARG		m_fa;

/*----------------------------------------------------------------------------------------------------*/
protected:
	struct			ITEM	//	Item Node
	{
		INT			type;
		INT			x0;
		INT			y0;
		INT			x1;
		INT			y1;
		union
		{
			DOUBLE	u_double[4];
			INT		u_int[4];
			POINT	u_point[4];
			CHAR	word[MAX_TEXT_LENGTH];
			DWORD	dwRecordType;
		};

		//	LINK
		ITEM		*next;
		ITEM		*prior;
	};

	struct			INFOHEADER
	{
		WORD		MTTag;
		INT			iVersion;
		RECT		SourceDCRect;
		RECT		SourcePICRect;
		RECT		TargetDCRect;
		RECT		TargetPICRect;
		BOOL		SourceDCInited;
		BOOL		SourcePICInited;
		BOOL		TargetDCInited;
		BOOL		TargetPICInited;
		
		COLORREF	NormalColor;
		COLORREF	TempColor;
		COLORREF	FlashLightColor;
		COLORREF	FlashDarkColor;

		FLOAT		fD1;
		FLOAT		fD2;
		CHAR		sUnit[20];
		INT			iDelay;

		CHAR		info[100];
	};
	INFOHEADER	m_InfoHeader;
/*----------------------------------------------------------------------------------------------------*/
public:
	BOOL ShowMark(BOOL bShow = TRUE);
	BOOL			BeginRecord(DWORD dwRecordType);		//	开始记录数据
	BOOL			Close();
	BOOL			EndRecord();							//	结束记录数据
	INT				GetCurrentAction();						//	返回当前鼠标动作
	VOID			GetInfo();
	BOOL			GetSourceDCRect(RECT &rect)		const;
	BOOL			GetSourcePICRect(RECT &rect)	const;
	BOOL			GetTargetDCRect(RECT &rect)		const;
	BOOL			GetTargetPICRect(RECT &rect)	const;
	BOOL			HasSelected()		const;
	VOID			InsertArc(int x0, int y0, int x2, int y2, int x3, int y3);
	BOOL			IsActive();
	BOOL			IsRecording();
	BOOL			KillActive();
	BOOL			LoadFile(CHAR *argPathName = NULL);

//	BOOL			MouseDown(HWND hWnd, UINT nFlags, CPoint point, HWND hContainWnd);
//	BOOL			MouseMove(HWND hWnd, UINT nFlags, CPoint point);
//	BOOL			MouseUp(HWND hWnd, UINT nFlags, CPoint point, HWND hContainWnd, CWnd *pInfoWnd);

	BOOL			MouseDown(UINT nFlags, CPoint point);
	BOOL			MouseMove(UINT nFlags, CPoint point);
	BOOL			MouseUp(UINT nFlags, CPoint point, CWnd *pInfoWnd);


	BOOL			ReDraw(HDC hDC);
	BOOL			SaveFile(CHAR *argPathName = NULL);
	BOOL			SelectItem(CPoint point);
	BOOL			SelectNone();
	BOOL			SelFlash(INT iControl = MT_SELECT_ON);
	BOOL			SetAction(INT action, LPARAM lParm, HWND hInfoWnd/* = NULL*/);
	BOOL			SetActive();
	BOOL			SetOutputWindow(HWND hContainWnd, HWND hWnd);
	VOID			SetSourceDCRect(RECT &rect);
	VOID			SetSourcePICRect(RECT &rect);
	VOID			SetTargetDCRect(RECT &rect);
	VOID			SetTargetPICRect(RECT &rect);
	BOOL			SetZoom(BOOL bIsZoom = TRUE);
	BOOL			TurnLeft();
	BOOL			TurnRight();
	BOOL			TurnX();
	BOOL			TurnY();
/*----------------------------------------------------------------------------------------------------*/
protected:
	BOOL m_bHideMark;
	BOOL			m_bActive;					//	活动标志
	BOOL			m_bHasStandardLength;		//	存在标准长度标志
	BOOL			m_bIsZoom;					//	当前是否放缩
	BOOL			m_bLightOn;					//	选择的记录当前是否高亮
	BOOL			m_bMouseDown;				//	鼠标(左键)是否按下的标志
	BOOL			m_bRecording;				//	正在记录标志
	FLOAT			m_fArea;					//	面积
	FLOAT			m_fZoomX;					//	横向放缩倍数
	FLOAT			m_fZoomY;					//	纵向放缩倍数
	HGDIOBJ			m_hCurrentPen;				//	当前使用的画笔
	HDC				m_hDC;						//	输出设备
	HGDIOBJ			m_hOldPen;					//	需要保存的旧画笔
	HWND			m_hContainWnd;				//	包容窗口
	HWND			m_hWnd;						//	输出窗口
	INT				m_iCurrentAction;			//	当前的状态
	INT				m_iCurrentPoint;			//	当前点索引
	FLOAT			m_iLength;					//	长度
	INT				m_iXTurn;					//	横向反转
	INT				m_iYTurn;					//	纵向反转
	ITEM*			m_pSelItem;					//	选择表头
	CString			m_sFilePathName;			//	存盘文件路径名字
	CHAR			m_sText[MAX_TEXT_LENGTH];	//	标记文字
	ITEM			m_tItemHeader;				//	记录表头
	CPoint			m_tMouseEnd;				//	鼠标拖动当前或结束位置
	CPoint			m_tMouseNewStart;			//	鼠标新的拖动开始位置
	CPoint			m_tMouseStart;				//	鼠标拖动开始位置
	RECT			m_tSourceDCRect;			//	源设备区域
	RECT			m_tSourcePICRect;			//	源图形区域
	RECT			m_tTargetDCRect;			//	目标设备区域
	RECT			m_tTargetPICRect;			//	目标图形区域
	ITEM			m_tTempItem;				//	临时使用的记录

	POINT			m_pt[MAX_MOUSE_POINT];		//	鼠标点列表

/*----------------------------------------------------------------------------------------------------*/
	BOOL			AppendNode(CMeta::ITEM *node);
	FLOAT			CalcArea(POINT &pa, POINT &pb, POINT &pc);
	VOID			CleanUp();
	VOID			ConvertRect(RECT &rect);
	BOOL			DoRecord(HDC hDC, CMeta::ITEM *node, INT fnDrawMode = R2_COPYPEN);
	BOOL			EraseNode(CMeta::ITEM *node);
	BOOL			EraseRecord(CMeta::ITEM *node);
	BOOL			EraseSel();								//	删除选择内容
	BOOL			FindNode(CMeta::ITEM *node);
	CMeta::ITEM*	FindRecord(DWORD dwRecordType, CMeta::ITEM* pStart = NULL);
	FLOAT			GetAngle(POINT &pa, POINT &pb, POINT &pc);
	BOOL			GetArrow(CPoint &start, CPoint &end, CPoint &pa, CPoint &pb);
	BOOL			LogString(CHAR *str)	const;
	BOOL			MoveSelToLast();		//	把选择的节点移到最后
	VOID			SetNewHeader();
	BOOL			SetStandLength(POINT &pa, POINT &pb, FLOAT fLen, CHAR *sUnit);
};

#endif	// __MT_H__

⌨️ 快捷键说明

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