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

📄 demo3doc.h

📁 Viaual C++实战演练一书的源代码,对于C++程序员有实际的借鉴意义.
💻 H
字号:
// Demo3Doc.h : interface of the CDemo3Doc class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_Demo3DOC_H__D9D566AB_FFD3_11D3_BB17_00104BC71186__INCLUDED_)
#define AFX_Demo3DOC_H__D9D566AB_FFD3_11D3_BB17_00104BC71186__INCLUDED_

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

class CMapLayer;

class CListen;
class CTcpSocket;
class CUdpData;
class CDynaObjects;


class CDemo3Doc : public CDocument
{
protected: // create from serialization only
	CDemo3Doc();
	DECLARE_DYNCREATE(CDemo3Doc)

// Attributes
public://海图显示相关定义
	CArray<CMapLayer*, CMapLayer*> m_aLayers;//海图层数组
	CDC* m_pMemDC;//绘制位图使用的DC
	CBitmap *m_pBitmap, *m_pDefaultBitmap;
	long m_nViewWidth, m_nVeiwHeight;//窗口最大显示范围
	double m_fMapjw[4];//当前海图经纬度范围
	double m_fMaxCX, m_fMaxCY;//当前海图最大显示范围(直角坐标)
	long m_nOffsetX, m_nOffsetY;//当前海图顶点相对屏幕原点偏移量
	CString m_strMapName;//海图名称
	long m_nMaxPoint;//海图图元最大端点数
	long* m_pData;

	void DrawMap(CDC* pDC);//绘制海图
	void Zoom(float scale);
	void ConvToXY(float jing, float wei, long& cx, long& cy);//经纬度(度)->直角坐标
	void ConvToXYs(float *jw, long *xy, int n);//经纬度(度)->直角坐标多点转换
	void ConvToJW(long cx, long cy, float& jing, float& wei);//直角坐标->经纬度(度)
	void LPtoDPs(long* data, int n);
	void LPtoDP(long &x, long &y);//海图逻辑坐标转换为屏幕坐标
	void DPtoLP(long &x, long &y);//屏幕坐标转换为海图逻辑坐标
	void SetCenter(CPoint point);//设置海图显示的中心
	void MoveOffset(CPoint point);//移动海图显示
	void SetLayerMenu(bool opened = true);//设置“图层”菜单
	void InitData();//初始化用户数据
	void DisplayLocationOnStatusBar(CPoint point);//在状态条中显示指定点经纬度

public://动态目标显示相关定义
	CDynaObjects* m_pShips;

public://网络通信相关定义
	CListen* m_pListen;
	CUdpData* m_pUdp;
	CPtrList m_lstConnectionList; //CTcpSocket列表
	int m_nSelected; //保存选择的位置
	short m_nCanDisplay; //可显示的公司航迹
	short m_nMustResend; //需接收本公司航迹的公司

	void ProcessPendingAccept();
	void ProcessPendingRead(char* buf, int len);
	CTcpSocket* ProcessPendingLink(char* RemoteHost, long RemotePort);
	void CloseSocket(CTcpSocket*);
	void CloseAllTcp();
	bool InitSocket(long TcpPort = 0, long UdpPort = 0);

private:
	double relfa(double r)
	{
		return log(tan(r*0.0087266 + 0.7853981));
	}

	double absfa(double s)
	{
		return (atan(exp(s)) - 0.7853981) * 114.59156; // 57.29578*2
	}

// Operations
public:
	
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CDemo3Doc)
	public:
	virtual BOOL OnNewDocument();
	virtual void Serialize(CArchive& ar);
	virtual void SetTitle(LPCTSTR lpszTitle);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CDemo3Doc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
	//{{AFX_MSG(CDemo3Doc)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_Demo3DOC_H__D9D566AB_FFD3_11D3_BB17_00104BC71186__INCLUDED_)

⌨️ 快捷键说明

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