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

📄 multargetview.cpp

📁 自己做的一个雷达仿真的程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MulTargetView.cpp : implementation of the CMulTargetView class
//

#include "stdafx.h"
#include "MulTarget.h"
#include "math.h"
#include "MulTargetDoc.h"
#include "MulTargetView.h"
#include "AirView.h"
#include "AirTargetView.h"
#include "LdxxDlg.h"
#include "WjcshDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#define pi 3.1415926
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMulTargetView

IMPLEMENT_DYNCREATE(CMulTargetView, CFormView)

BEGIN_MESSAGE_MAP(CMulTargetView, CFormView)
	//{{AFX_MSG_MAP(CMulTargetView)
	ON_WM_PAINT()
	ON_COMMAND(ID_AIRYS, OnAirys)
	ON_COMMAND(ID_OPENAIRLD, OnOpenairld)
	ON_WM_TIMER()
	ON_COMMAND(ID_LDXX, OnLdxx)
	ON_COMMAND(ID_JTXX, OnJtxx)
	ON_COMMAND(ID_MBSHC, OnMbshc)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMulTargetView construction/destruction

CMulTargetView::CMulTargetView()
	: CFormView(CMulTargetView::IDD)
{
	
	//{{AFX_DATA_INIT(CMulTargetView)
	//}}AFX_DATA_INIT
	// TODO: add construction code here

}

CMulTargetView::~CMulTargetView()
{
}

void CMulTargetView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMulTargetView)
	//}}AFX_DATA_MAP
}

BOOL CMulTargetView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CMulTargetView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
    //在综合显控台隐藏多余控件
	GetDlgItem(IDC_STXX)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STMBPH)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STMBXX)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_CBMBPH)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STSHJ)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_CBSHJ)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STMBSHX)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDITMBSH)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STMBLX)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDITMBLX)->ShowWindow(SW_HIDE);

	GetDlgItem(IDC_STMBJL)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDITMBJL)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STMBV)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDITMBV)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STFWJ)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDITFWJD)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STFWJD)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDITFWJF)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STFWJF)->ShowWindow(SW_HIDE);
    GetDlgItem(IDC_STX)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDITX)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STY)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDITY)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_STZ)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_EDITZ)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_RADIOMB)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_BTSEND)->ShowWindow(SW_HIDE);
	GetDlgItem(IDC_LISTFORM)->ShowWindow(SW_HIDE);
	pYellow.CreatePen(PS_DASH,4,RGB(0,10,195));
	bBlack.CreateSolidBrush(RGB(0,0,0));
    pWhite.CreatePen(PS_DASH,1,RGB(255,255,255));
	bWhite.CreateSolidBrush(RGB(255,255,255));
	
	m_lch=500000;
	
}

/////////////////////////////////////////////////////////////////////////////
// CMulTargetView printing

BOOL CMulTargetView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMulTargetView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMulTargetView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CMulTargetView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
	// TODO: add customized printing code here
}

/////////////////////////////////////////////////////////////////////////////
// CMulTargetView diagnostics

#ifdef _DEBUG
void CMulTargetView::AssertValid() const
{
	CFormView::AssertValid();
}

void CMulTargetView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CMulTargetDoc* CMulTargetView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMulTargetDoc)));
	return (CMulTargetDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMulTargetView message handlers

void CMulTargetView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	

	 // device context for painting
	CClientDC  clpDC(this);
	//视图区

	CRect cClientRect;
	GetClientRect(&cClientRect);
    RightX=cClientRect.BottomRight().x,
    RightY=cClientRect.BottomRight().y;
		   
	CX=cClientRect.CenterPoint().x;
		   
	CY=cClientRect.CenterPoint().y;
           


    //m_pMemDC->DrawText("雷达显示模拟器",m_titlerect,DT_TOP)
    
    
	//空中扫描区
	CRect AirRect(0,0,CX*0.95,CY);
    m_Aircx=AirRect.CenterPoint().x;  //中心点横坐标
	m_Aircy=AirRect.CenterPoint().y;  //中心点纵坐标
	m_AirR=AirRect.CenterPoint().y;             //半径
    m_xspm=m_AirR/500000;

	//水面扫描区
	CRect OnWaterRect(RightX/2*1.05,0,RightX,RightY/2*0.99);
    m_OnWatercx=OnWaterRect.CenterPoint().x;  //中心点横坐标
	m_OnWatercy=OnWaterRect.CenterPoint().y;  //中心点纵坐标
	m_OnWaterR=m_AirR;             //半径
    //水下扫描区
	CRect UnWaterRect(0,RightY/2*1.06,RightX/2*0.95,RightY);
    m_UnWatercx=UnWaterRect.CenterPoint().x;  //中心点横坐标
	m_UnWatercy=UnWaterRect.CenterPoint().y;  //中心点纵坐标
	m_UnWaterR=m_AirR*0.95;      
	
	
	
	//填充平台间隔区zong(红色)
	CRect MiddleRectZ(CX*0.95,0,RightX/2*1.05,RightY);
    CBrush FillMiddlebr(RGB(255,0,0));
	clpDC.SelectObject(&FillMiddlebr);
	clpDC.FillRect(MiddleRectZ,&FillMiddlebr);
    FillMiddlebr.DeleteObject();
	//填充平台间隔区heng(红色)
    CRect MiddleRectH(0,CY*0.99,RightX,RightY/2*1.06);
    
	clpDC.SelectObject(&FillMiddlebr);
	clpDC.FillRect(MiddleRectH,&FillMiddlebr);
    FillMiddlebr.DeleteObject();
    
	//定义黄色画笔
	CPen *pOld,pYellow; 
	pYellow.CreatePen(PS_DASH,4,RGB(0,10,195));  
	pOld=clpDC.SelectObject(&pYellow);  
	
	
    //定义黑色刷子
	CBrush fillbr(RGB(12,0,0)),*brOld;
	brOld=clpDC.SelectObject(&fillbr);
	
	//初始化对空雷达
	clpDC.FillRect(AirRect,&fillbr);//
	CRect AirEllipse(m_Aircx,m_Aircy,m_Aircx,m_Aircy);
    AirEllipse.InflateRect(m_AirR,m_AirR);
	clpDC.Ellipse(AirEllipse);

    //初始化水面雷达
	clpDC.FillRect(OnWaterRect,&fillbr);//
	CRect OnWaterEllipse(m_OnWatercx,m_OnWatercy,m_OnWatercx,m_OnWatercy);
    OnWaterEllipse.InflateRect(m_OnWaterR,m_OnWaterR);
	clpDC.Ellipse(OnWaterEllipse);
	

	//初始化水下雷达
	clpDC.FillRect(UnWaterRect,&fillbr);//
	CRect UnWaterEllipse(m_UnWatercx,m_UnWatercy,m_UnWatercx,m_UnWatercy);
    UnWaterEllipse.InflateRect(m_UnWaterR,m_UnWaterR);
	clpDC.Ellipse(UnWaterEllipse);
    
	//我舰信息显示区

	CRect MeMessageRect(RightX/2*1.05,RightY/2*1.06,RightX,RightY); 
    clpDC.FillRect(MeMessageRect,&fillbr);
	
	
	
	pYellow.DeleteObject();
	pYellow.CreatePen(PS_DASH,1,RGB(255,255,255));
    pOld=clpDC.SelectObject(&pYellow);
	//同心圆
	//空中
	for(int i=4;i>0;i--)
	
	{   CRect Ellipserect(m_Aircx,m_Aircy,m_Aircx,m_Aircy);
		Ellipserect.InflateRect(0.2*i*m_AirR,0.2*i*m_AirR);

		clpDC.Ellipse(Ellipserect);
	}
	//水面
	for(int j=4;j>0;j--)
	
	{   CRect Ellipserect(m_OnWatercx,m_OnWatercy,m_OnWatercx,m_OnWatercy);
		Ellipserect.InflateRect(0.2*j*m_OnWaterR,0.2*j*m_OnWaterR);

		clpDC.Ellipse(Ellipserect);
	}
   //水下
	for(int l=4;l>0;l--)
	
	{   CRect Ellipserect(m_UnWatercx,m_UnWatercy,m_UnWatercx,m_UnWatercy);
		Ellipserect.InflateRect(0.2*l*m_UnWaterR,0.2*l*m_UnWaterR);

		clpDC.Ellipse(Ellipserect);
	}
	

	//对空雷达类型显示
	CRect TittleAir(CX*0.7,0,CX*0.95,CY*0.1);
	//CBrush FillTittle(RGB(192,0,0));
	//clpDC.FillRect(TittleRect,&FillTittle);
	clpDC.SetTextColor(RGB(255,255,255));
    clpDC.SetBkMode(TRANSPARENT); //文本设置为透明模式
	
	clpDC.DrawText("平台1",TittleAir,DT_TOP);
	//
	CRect TittleUnwater(RightX/2*0.7,RightY/2*1.1,RightX*0.95,RightY/2*1.2);
	
    clpDC.DrawText("平台2",TittleUnwater,DT_TOP);
	
	//
	CRect TittleOnwater(RightX*0.9,0,RightX,RightY/2*0.1);
    clpDC.DrawText("平台3",TittleOnwater,DT_TOP);

   //CRect MeMessageRect(cClientRect.BottomRight().x/2*1.05,cClientRect.BottomRight().y/2*1.06,
//		cClientRect.BottomRight().x,cClientRect.BottomRight().y); 
	
	clpDC.SetTextColor(RGB(0,255,0));
    clpDC.SetBkMode(TRANSPARENT); //文本设置为透明模式
	CRect FXRect(RightX/2*1.22,RightY/2*1.06,RightX/2*1.36,RightY/2*1.11);
	clpDC.DrawText("速   度",FXRect,DT_TOP);

	//
	CRect FWJRect(RightX/2*1.37,RightY/2*1.06,RightX/2*1.51,RightY/2*1.11);
	clpDC.DrawText("航向角",FWJRect,DT_TOP);
    //
    CRect ZYJRect(RightX/2*1.52,RightY/2*1.06,RightX/2*1.66,RightY/2*1.11);
	clpDC.DrawText("纵摇角",ZYJRect,DT_TOP);
    //
    CRect HYJRect(RightX/2*1.67,RightY/2*1.06,RightX/2*1.81,RightY/2*1.11);
	clpDC.DrawText("横摇角",HYJRect,DT_TOP);
	//
    CRect TMRect(RightX/2*1.82,RightY/2*1.06,RightX/2*2,RightY/2*1.11);
	clpDC.DrawText("时  间",TMRect,DT_TOP);
	//
	
	CRect WJXXRect(RightX/2*1.06,RightY/2*1.15,RightX/2*1.20,RightY/2*1.26);
    clpDC.DrawText("我舰信息",WJXXRect,DT_TOP);
	//
	CRect CYZQRect(RightX/2*1.22,RightY/2*1.28,RightX/2*1.4,RightY/2*1.33);
	clpDC.DrawText("采样周期",CYZQRect,DT_TOP);
    //
     CRect SMPLRect(RightX/2*1.42,RightY/2*1.28,RightX/2*1.6,RightY/2*1.33);
    clpDC.DrawText("扫描频率",SMPLRect,DT_TOP);
    //
    CRect ZYJLRect(RightX/2*1.62,RightY/2*1.28,RightX/2*1.8,RightY/2*1.33);
    clpDC.DrawText("作用距离",ZYJLRect,DT_TOP);
    //
	CRect TM2Rect(RightX/2*1.82,RightY/2*1.28,RightX/2*2,RightY/2*1.33);

⌨️ 快捷键说明

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