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

📄 gpsdrawmap.h

📁 用VC写的监控中心后台程序。 代码全
💻 H
字号:
// GpsDrawMap.h: interface for the CGpsDrawMap class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GPSDRAWMAP_H__87EBC361_5E1C_11D8_B7C7_00E01808A228__INCLUDED_)
#define AFX_GPSDRAWMAP_H__87EBC361_5E1C_11D8_B7C7_00E01808A228__INCLUDED_

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

//Others class head file include
#include "GpsFatStruct.h"
#include "GpsPoint.h"
#include "RoadPoint.h"
#include "SmallRoadStruct.h"
#include "GpsRoadStruct.h"
#include "CurrMapInfo.h"
#include "GpsLinkStruct.h"
#include "GpsRoadCrossPoint.h"
#include "GpsColorBlock.h"
#include "GpsSignObject.h"
#include "GpsAreaLibStruct.h"
#include "BmpProc.h"
#include "Color.h"
#include "BRCrossStruct.h"
#include "GpsBusLine.h"
#include "MakeDef.h"


struct BR_CROSS
{
	CBRCrossStruct		m_StartCross;
	CBRCrossStruct		m_EndCross;
	bool				m_bEnable;
	bool				m_bHaveSpoint;
};


struct	SHOW_SIGN
{
	BYTE		bShowBuilding;
	BYTE		bShowHotel;
	BYTE		bShowCompany;
	BYTE		bShowAmuse;
	BYTE		bShowPlaceName;
	BYTE		bShowGovern;
	BYTE		bShowTraffic;
	BYTE		bShowShopping;
	BYTE		bShowEducation;
	BYTE		bShowHospital;
	BYTE		bShowBureau;
	BYTE		bShowOil;
};


class CGpsDrawMap  
{
public:
	CGpsDrawMap();
	virtual ~CGpsDrawMap();

//varable
public:
	CGpsFatStruct	m_cFatStruct;
	CCurrMapInfo	m_cCurrMapInfo;
	ChangeTriangle	m_WndTriangle;
	CGpsSignObject	pDispOneSign;
	COLORREF		SaveInvalidRectColor[40][40];
	CObList			mLinkList;
	CObList			mSaveRecePointList;
	CObList			mSaveBRList;
	CObList			mSaveBusLineList;
	CObList			mSaveTempList1;
	CObList			mSaveTempList2;
	CString			SaveGpsCarPath[25];
	CColor			m_cColor;
	CView			*m_pCurrView;
	BYTE			*FileContent,gCurrMapLevel,m_PointWidth;
	BYTE			m_byZoomCoeffic;
	SHOW_SIGN		m_ShowSign;

	BR_CROSS		gBRcross;



//function
public:
	void			DrawFatMap(CDC *pDC);
	void			ClearMemberVar();
	void			InitDrawMap();

	void			CopyStr2Arr(CString Str,char Arr[],BYTE ArrLen);
	void			CopyEquaLenArr(char *SrcArr,char *DstArr,BYTE CpyLen);
	void			ClearBYTEArr(char *Array,long ArrLen);
	long			GetGpsFatBuf();
	void			GetGpsFatInfo();
	long			GetFourBNum(BYTE *BUF,long BufPos);
	short			GetTwoBNum(BYTE *BUF,long BufPos);
	BYTE			GetOneBNum(BYTE *BUF,long BufPos);

	long			GetLinkLibAddr(char *pLinkName);
	BYTE			CompareTwoArr(char *pArr1,char *pArr2);
	void			GetLenArray(BYTE *pTarget,BYTE Len,BYTE *Buf,long BufPos);

	long			GetLinkList(CObList *pLinkList,BYTE MapLevel);
	void			GetLibInfo(BYTE *Buf,long InfoAddr,char *FileName,long *StartAddr,long *EndAddr);
	void			GetLinkLibThreePoint(BYTE * BUF,long StartAddr,ChangeTriangle * ThreePoint);
	void			GetCurrMapInfo(CGpsLinkStruct *pLinkStruct,CCurrMapInfo *MapInfo);
	void			RefreshMapWnd();
	void			CovertNEXY(CGpsPoint * cmpoint, ChangeNormal change, bool NE2XY);
	void			CalculateCoeffNEXY(ChangeTriangle Triangle1,
									   ChangeTriangle Triangle2,
									   ChangeNormal *Change);
	bool			GetDataLib(char *DataLibName);
	long			GetDataLibAddr(char *DataLibName);
	long			GetColorBList(CObList *ColorBList,long StartAddr);
	long			GetRoadPlainPoint(CObList *RoadList,long StartAddr);
	long			GetRoadCrossPoint(CObList *CrossList,long StartAddr);
	void			GetPointNE(BYTE *BUF,long *BufPos,double *gx,double *gy);
	void			DrawColorBlock(CObList *ColorBList,CDC * MemDC);
	void			DrawOneBlock(CObList * PointList,CPen * CurrPen,CDC * MemDC);
	long			GetMinX(long *pDataXY,long PointCount,long MinX);
	void			GetDrawPoint(long line_p[], int minX1, int minX2, long *Result);
	void			DrawTriangle(long *bian1, long *bian2,CPen * CurrPen,CDC * MemDC);
	void			DrawLine(long SX, long SY, long EX, long EY, 
							 int  LineCount,CPen * CurrPen,CDC * MemDC);
	void			DrawRoad(CObList *RoadList,CDC *pDC);
	void			DrawRoadName(CObList *RoadList,CDC *pDC);
	void			DrawOneRoadName(CObList * TempList,CString RoadName,CDC * MemDC);
	void			ReDraw(CDC *pDC);
	void			ClearLinkList(CObList *pLinkList);
	bool			GetCurrLinkLib(CObList *LinkList,CGpsLinkStruct *pLink,double gx,double gy);
	bool			CheckPointInMap(double gx,double gy,ChangeTriangle *TmpTri);
	bool			CompareTri(ChangeTriangle TmpTri1,ChangeTriangle TmpTri2);
	double			CovertNE(long lTemp);
	long			CovertToLongNE(double dTemp);
	bool			SaveRecePoint(double gx,double gy,CDC *pDC,CString strVehicleNO = "");
	void			ClearPointList(CObList *PointList);
	void			DrawGpsCar(CDC *pDC,double Course);
	CPoint			GetRoadMidPoint(CObList *RoadList);
	BYTE			GetChrCount(CString RoadName);
	void			DrawStr(CDC *pDC,CPoint point,CString Name);
	long			CalcTwoPointDist(CPoint sp,CPoint ep);
	long			CalcPointsDist(CObList *TempList,bool ByNE = false);
	CPoint			CalcOneLinePoint(CPoint sp,CPoint ep,long WordPos,long Bevel);
	CString			GetCarByDirection(double Course);
	void			DrawEllipse(CDC *pDC);
	BYTE			IsValidNE(double gx,double gy);
	BYTE			CheckMapIsChange(double gx,double gy);
	void			RedrawInvalidRect(CRect cRect,CDC * pDC,bool Flag);
	void			ClearSaveInvalidRectColor();

	CString			GetMapInfoByNE(double gx,double gy,BYTE SignType,BYTE InfoType);
	long			GetSignLibAddr(char *SignLibName);
	bool			GetSignLib(char *SignLibName,CObList *SignList,bool Del = true);
	BYTE			GetSignList(CObList *SignList,long StartAddr,bool Del);
	bool			GetSignObjectList(CObList *SignList,long &StartAddr,BYTE SignObject_Bytes,
									  BYTE SignType,bool IsCompany,bool Del,CString IconName = "");

	CString			SearchRoad(const CPoint point,CString &RoadSn);
	long			DistanceToLine(long SY, long SX, long EY, long EX, long NY, long NX);
	BYTE			PointOnLineNE(long SY, long SX, long EY, long EX, long NY, long NX, long K);
	void			SwapTwoVar(long &a, long &b);
	long			CalcPointToOneRoadDist(CPoint point,CSmallRoadStruct *pSmall);
	void			DrawSignLib(CDC *pDC);
	void			DrawOneSignPoint(CDC *pDC);
	void			GetView(CView *pView);
	void			DrawIcon(CDC *pDC,CPoint point,CString IconName);

	CString			GetCurrDir();
	bool			ShowSignLib();
	void			FreshWnd();
	void			SearchSign();

	void			WriteCross(CGpsRoadCrossPoint *pCross,CString FileName);
	void			WriteBRcross(CBRCrossStruct *pBRCross,CString FileName);
	void			WritePathToTxt(CObList *PathList);
	long			alculateDist(CPoint SP,CPoint EP);
	short			BR_SaveOnePath(CGpsRoadCrossPoint *StartPoint,
					 CGpsRoadCrossPoint *EndPoint,
					 CObList *RoadList,CObList *CrossList,CObList *SavePathList);
	bool			BRCrossInList(CBRCrossStruct *pBRCross,CObList *CrossList);
	bool			HaveSaveOneRoadSn(CGpsRoadCrossPoint *pCross1,CGpsRoadCrossPoint *pCross2);
	bool			CheckCrossSame(CGpsRoadCrossPoint *pC1,CGpsRoadCrossPoint *pC2);
	bool			GetMinDistPoint(CObList *CrossList,CBRCrossStruct *MinCross);
	bool			SaveInitBRCross(CObList *CrossList,CObList *DstList);
	long			CalculateOneRoadVD(CObList *PlainList);
	long			CalculateTwoPointDistance(CPoint PrevP,CPoint CurrP);
	long			CalcCrossDistInRoadSn(CGpsRoadCrossPoint *StartPoint,
										  CGpsRoadCrossPoint *EndPoint,
										  CObList *RoadList,CString RoadSn);
	long			CalcCrossVectorDist(CGpsRoadCrossPoint *StartPoint,
										CGpsRoadCrossPoint *EndPoint,
										CObList *RoadList);
	bool			GetOneBRCrossPoint(CPoint point,CObList *RoadList,CObList *CrossList,
									   CString Sn,CBRCrossStruct *pDstCross,CObList *SavePoint);
	bool			RoadSnInCross(CString RoadSn,CGpsRoadCrossPoint *pCross);
	bool			GetOneRoadPoint(CObList *RoadList,CString RoadSn,CGpsRoadStruct *DstRoad);
	bool			SimilarCross(CGpsRoadCrossPoint *C1,CGpsRoadCrossPoint *C2);
	bool			IsInvalidSn(CString RoadSn);
	bool			GetOneRoadPlain(CGpsRoadCrossPoint *pCross1,
								    CGpsRoadCrossPoint *pCross2,
									CObList *RoadList,CString RoadSn,CObList *DstList);
	bool			GetPointInListEx(CPoint point,CString RoadSn,CObList *CrossList,CGpsRoadCrossPoint *pPoint,BYTE Bound);
	void			DrawLineEx(CDC *pDC,CObList *TempList);
	bool			DrawBetweenCross(CGpsRoadCrossPoint *pPrevCross,CGpsRoadCrossPoint *pCross,CObList *RoadList,CDC *pDC);
	void			DrawBetweenBRCrossLine(CDC *pDC,CObList *SaveBRCrossList);
	void			CalculateBRroadPath(CPoint point);
	bool			SearchSignByPoint(CPoint point,CPoint &Ret);

	void			DispShootPic(CDC *pDC,CPoint point,CString PicPath);

	bool			CalcNE2XY(double gx,double gy,long &x,long &y);
	void			ErasePrevPoint(CDC *pDC,long x,long y);

	void			GetAreaLibList(CObList *AreaList);
	void			ClearStrArr(CString StrArr[],long	Count);
	void			MoveScrollBar(long x,long y);
	void			ReCalcPointXY(CObList *PointList);
	void			ReCalcColorBXY(CObList *ColorBList);
	void			ReCalcRoadXY(CObList *RoadList);
	void			CalcAllPointXY();

	void			ZoomDown();
	void			ZoomUp();
	void			DispOtherLevelMap();
	void			GetCarXY(int &nx,int &ny);		//获取显示车位置


	void			MapDrawLineWidth(CDC *pDC, long SX, long SY, long EX, long EY, BYTE MapLineWidth,CPen *Pen);
	void			MapDrawRoad(CDC *pDC, long SX, long SY, long EX, long EY, BYTE RoadWide,CPen *CurrPen);


	bool			CompanySimilarStr(CString Str1,CString Str2);
	void			SearchSignByInput();
	void			DrawSignByName(CString SignName);

};

#endif // !defined(AFX_GPSDRAWMAP_H__87EBC361_5E1C_11D8_B7C7_00E01808A228__INCLUDED_)

⌨️ 快捷键说明

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