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