📄 airtargetview.cpp
字号:
// 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 + -