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

📄 airtargetview.cpp

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

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

/////////////////////////////////////////////////////////////////////////////
// CAirTargetView

IMPLEMENT_DYNCREATE(CAirTargetView, CFormView)

CAirTargetView::CAirTargetView()
	: CFormView(CAirTargetView::IDD)
{
	//{{AFX_DATA_INIT(CAirTargetView)
	m_fwj = 0.0;
	m_jl = 0.0;
	m_mblx = _T("");
	m_mbshx = _T("");
	m_v = 0.0;
	m_shiyan = 0;
	//}}AFX_DATA_INIT
}

CAirTargetView::~CAirTargetView()
{
}

void CAirTargetView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAirTargetView)
	DDX_Control(pDX, IDC_LISTFORM, m_byxsh);
	DDX_Control(pDX, IDC_CBSHJ, m_shj);
	DDX_Control(pDX, IDC_CBMBPH, m_mbph);
	DDX_Text(pDX, IDC_EDITFWJD, m_fwj);
	DDX_Text(pDX, IDC_EDITMBJL, m_jl);
	DDX_Text(pDX, IDC_EDITMBLX, m_mblx);
	DDX_Text(pDX, IDC_EDITMBSH, m_mbshx);
	DDX_Text(pDX, IDC_EDITMBV, m_v);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAirTargetView, CFormView)
	//{{AFX_MSG_MAP(CAirTargetView)
	ON_WM_PAINT()
	ON_WM_TIMER()
	ON_COMMAND(ID_POUSEAIRLD, OnPouseairld)
	ON_COMMAND(ID_CONTINUEAIRLD, OnContinueairld)
	ON_COMMAND(ID_LCH500, OnLch500)
	ON_COMMAND(ID_LCH200, OnLch200)
	ON_COMMAND(ID_LCH100, OnLch100)
	ON_COMMAND(ID_LCH50, OnLch50)
	ON_COMMAND(ID_LCH20, OnLch20)
	ON_COMMAND(ID_LCH10, OnLch10)
	ON_BN_CLICKED(IDC_BTSEND, OnBtsend)
	ON_COMMAND(ID_LDXX, OnLdxx)
	ON_COMMAND(ID_JTXX, OnJtxx)
	ON_COMMAND(ID_OPENAIRLD, OnOpenairld)
	ON_COMMAND(ID_MBSHC, OnMbshc)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAirTargetView diagnostics

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

void CAirTargetView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CAirTargetView message handlers
CMulTargetDoc* CAirTargetView::GetDocument()
{
  ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMulTargetDoc)));
	return (CMulTargetDoc*)m_pDocument;
}

void CAirTargetView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
		CClientDC  clpDC(this);
	//视图区

	CRect cClientRect;
	GetClientRect(&cClientRect);
    
	//扫描区
	CRect SmRect(0,0,cClientRect.CenterPoint().x*1.1,cClientRect.CenterPoint().y*1.3);
    m_cx=SmRect.CenterPoint().x;  //中心点横坐标
	m_cy=SmRect.CenterPoint().y;  //中心点纵坐标
	
	
	m_r=cClientRect.CenterPoint().y*0.65;             //半径
    m_xspm=m_r/m_lch;                                 //每米需要多少相素
	
	//定义黄色画笔
	 
	clpDC.SelectObject(&pYellow);  
	
	
    //定义黑色刷子
	
	clpDC.SelectObject(&bBlack);
	
	
	clpDC.FillRect(SmRect,&bBlack);//
	CRect Ellipserect(m_cx,m_cy,m_cx,m_cy);
    Ellipserect.InflateRect(m_r,m_r);
	clpDC.Ellipse(Ellipserect);
	
	
   clpDC.SelectObject(&pWhite);
	//同心圆
	
	for(int i=8;i>0;i--)
	
	{   CRect Ellipserect(m_cx,m_cy,m_cx,m_cy);
		Ellipserect.InflateRect(0.11*i*m_r,0.11*i*m_r);

		clpDC.Ellipse(Ellipserect);
	}
	// Do not call CFormView::OnPaint() for painting messages
}



void CAirTargetView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	CMulTargetDoc * pDoc=GetDocument();
	/*int hi=pDoc->m_mb,
	    zi=pDoc->m_mbhj;
    m_fwj=pDoc->AirMB[hi][zi].fwj;
	m_v=pDoc->AirMB[hi][zi].v;
	m_jl=pDoc->AirMB[hi][zi].d;
	UpdateData(FALSE);*/
    
	// TODO: Add your specialized code here and/or call the base class
	pYellow.CreatePen(PS_DASH,4,RGB(0,10,195));
	bBlack.CreateSolidBrush(RGB(0,0,0));
    pWhite.CreatePen(PS_DASH,2,RGB(255,255,255));
	bWhite.CreateSolidBrush(RGB(255,255,255));
    pRed.CreatePen(PS_DASH,1,RGB(255,0,0));
	bRed.CreateSolidBrush(RGB(255,0,0));
	pGreen.CreatePen(PS_DASH,1,RGB(0,255,0));
	bGreen.CreateSolidBrush(RGB(0,255,0));
	pBlue.CreatePen(PS_DASH,1,RGB(0,0,255));
	bBlue.CreateSolidBrush(RGB(0,0,255));
	pZhl.CreatePen(PS_DASH,1,RGB(15,155,255));
	bZhl.CreateSolidBrush(RGB(15,155,255));
    m_flag1=0;
	m_flag2=0;
    m_lch=500000;
	m_hxj=pDoc->m_pt1hxj;
	m_x0=pDoc->m_pt1X;
	m_y0=pDoc->m_pt1Y;

	m_byxsh.InsertColumn(0,"目标批号",LVCFMT_LEFT,110);
	m_byxsh.InsertColumn(1,"敌我属性",LVCFMT_LEFT,110);
    m_byxsh.InsertColumn(2,"空间属性",LVCFMT_LEFT,110);
	m_byxsh.InsertColumn(3,"距 离",LVCFMT_LEFT,80);
	m_byxsh.InsertColumn(4,"速 度",LVCFMT_LEFT,80);
	m_byxsh.InsertColumn(5,"方位角",LVCFMT_LEFT,80);
	m_byxsh.InsertColumn(6,"高低角",LVCFMT_LEFT,80);
	m_byxsh.InsertColumn(7,"X坐标",LVCFMT_LEFT,80);
	m_byxsh.InsertColumn(8,"Y坐标",LVCFMT_LEFT,80);
	m_byxsh.InsertColumn(9,"Z坐标",LVCFMT_LEFT,80);
    m_byxsh.InsertColumn(10,"时间",LVCFMT_LEFT,120);
	/*if(pDoc->m_deg11!=0&&pDoc->m_deg12!=0)
	{	
		deg1=pDoc->m_deg11;
        deg2=pDoc->m_deg12;
		SetTimer(1,1,NULL);
	}*/

	

    
}

void CAirTargetView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
    CMulTargetDoc *pDoc=GetDocument();

   
  
   
	CClientDC clpDC(this);
	
	CDC memDC;
	memDC.CreateCompatibleDC(&clpDC);
	
   CRect cClientRect;
	GetClientRect(&cClientRect);
    
	
	//扫描区
	CRect SmRect(0,0,cClientRect.CenterPoint().x*1.1,cClientRect.CenterPoint().y*1.3);
    
   CBitmap memBitmap;
	memBitmap.CreateCompatibleBitmap(&clpDC,SmRect.Width(),SmRect.Height());
    memDC.SelectObject(&memBitmap);
	

	
   
	memDC.SelectObject(&bBlack);
	memDC.SelectObject(&pYellow);
	
	memDC.FillRect(SmRect,&bBlack);//
	CRect Ellipserect(m_cx,m_cy,m_cx,m_cy);
    Ellipserect.InflateRect(m_r,m_r);
	memDC.Ellipse(Ellipserect);

	memDC.SelectObject(&pWhite);
	//同心圆
	
	for(int i=8;i>0;i--)
	
	{   CRect Ellipserect(m_cx,m_cy,m_cx,m_cy);
		Ellipserect.InflateRect(0.11*i*m_r,0.11*i*m_r);

		memDC.Ellipse(Ellipserect);
		//memDC.SetROP2(R2_NOTXORPEN);
	}
	





	
  if(deg1==360)
  {
     deg1=0;
  }

  if(deg2==360)
  {
	  deg2=0;
  }
	

	double mr=m_r-3;
	
    double x1=m_cx-mr,
	       y1=m_cy-mr,
		   x2=m_cx+mr,
		   y2=m_cy+mr;
	memDC.SelectObject(&bWhite);
	
	memDC.SelectObject(&pWhite);
	memDC.Pie(x1,y1,x2,y2,m_cx+mr*cos(deg2*pi/180),
		m_cy+mr*sin(deg2*pi/180),m_cx+mr*cos(deg1*pi/180),
		m_cy+mr*sin(deg1*pi/180));

		//目标显示

    



    
	 
	 for(int loopmb=0;loopmb<=pDoc->m_mb;loopmb++)
	 {   
		 
		 
                
		 
		  int loop=0;
		  double fwj3;
          double fwj2;
		 if(pDoc->m_mb>-1&&pDoc->AirMB[loopmb][loop].d<m_lch)
		 {
               
		  while(pDoc->AirMB[loopmb][loop].hj&&loop<500&&
			  pDoc->m_mb>-1&&pDoc->AirMB[loopmb][loop].d<m_lch)
		  {
			  
			  double xloop,yloop;
			  
			 
			  
			  
			         if(pDoc->AirMB[loopmb][loop].lxflag==2||pDoc->AirMB[loopmb][loop].lxflag==3)
					 {
			             if(m_cx+m_xspm*pDoc->AirMB[loopmb][loop].bx<m_cx&&
			                                     m_cy+m_xspm*pDoc->AirMB[loopmb][loop].by<m_cy)      
			              fwj2=270-pDoc->AirMB[loopmb][loop].bfwj;
		                 if(m_cx+m_xspm*pDoc->AirMB[loopmb][loop].bx<=m_cx&&
			                m_cy+m_xspm*pDoc->AirMB[loopmb][loop].by>=m_cy)      
			                 fwj2=pDoc->AirMB[loopmb][loop].bfwj+90;
		      	         if(m_cx+m_xspm*pDoc->AirMB[loopmb][loop].bx>=m_cx&&
			                m_cy+m_xspm*pDoc->AirMB[loopmb][loop].by<m_cy) 
			                  fwj2=270+pDoc->AirMB[loopmb][loop].bfwj;
			             if(m_cx+m_xspm*pDoc->AirMB[loopmb][loop].bx>=m_cx&&
			                 m_cy+m_xspm*pDoc->AirMB[loopmb][loop].by>=m_cy) 
			                 fwj2=90-pDoc->AirMB[loopmb][loop].bfwj;
			                xloop=m_cx+pDoc->AirMB[loopmb][loop].d*cos(fwj2*pi/180)*m_xspm;
		                    yloop=m_cy+pDoc->AirMB[loopmb][loop].d*sin(fwj2*pi/180)*m_xspm;
					 }
			         if(pDoc->AirMB[loopmb][loop].lxflag==1&&pDoc->AirMB[loopmb][loop].tflag)
					 {
			              xloop=m_cx+m_xspm*pDoc->AirMB[loopmb][loop].bx,
			              yloop=m_cy+m_xspm*pDoc->AirMB[loopmb][loop].by;
					 }
                     switch(pDoc->AirMB[loopmb][loop].dwshxbz)
					 {
					 case 1:
						 memDC.SelectObject(&pRed);
						 memDC.SelectObject(&bRed);
						 break;
					 case 2:
						 memDC.SelectObject(&pBlue);
						 memDC.SelectObject(&bBlue);
						 break;
                     case 3:
						 memDC.SelectObject(&pGreen);
						 memDC.SelectObject(&bGreen);
						 break;
					 case 4:
						 memDC.SelectObject(&pZhl);
						 memDC.SelectObject(&bZhl);
						 break;
					 }
					 
					 CRect mbRect2(xloop,yloop,xloop,yloop);
                     mbRect2.InflateRect(1,1);
                     memDC.Ellipse(mbRect2);
          
            
		            if(pDoc->AirMB[loopmb][loop].m_flag==loop)
					{
                         if(m_cx+m_xspm*pDoc->AirMB[loopmb][loop].bx<m_cx&&
			                m_cy+m_xspm*pDoc->AirMB[loopmb][loop].by<m_cy)      
		  
			                  fwj3=270-pDoc->AirMB[loopmb][loop].bfwj;
			  

⌨️ 快捷键说明

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