📄 xltdlg.cpp
字号:
// XltDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Wonder.h"
#include "XltDlg.h"
#include "DataStruct.h"
#include "XltFZDlg.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CYjbkData YjbkData[];
extern int YjbkNum ;
extern int YjbkTotal ;
extern BYTE Data232[];
extern fdlx FDLH;
extern zslx ZXLH;
extern int Yjb_Num;
extern float a;
extern float b;
extern float c;
/////////////////////////////////////////////////////////////////////////////
// CXltDlg dialog
CXltDlg::CXltDlg(CWnd* pParent /*=NULL*/)
: CDialog(CXltDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CXltDlg)
m_sDLXX = _T("");
m_sDYXX = _T("");
m_fU1I1 = 0.0f;
m_fU1U1 = 0.0f;
m_fU1U2 = 0.0f;
m_fU1U3 = 0.0f;
m_fU2I2 = 0.0f;
m_fU3I3 = 0.0f;
m_fPL = 0.0f;
//}}AFX_DATA_INIT
}
void CXltDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CXltDlg)
DDX_Text(pDX, IDC_XLGDLG_EDT_DLXX, m_sDLXX);
DDX_Text(pDX, IDC_XLGDLG_EDT_DYXX, m_sDYXX);
DDX_Text(pDX, IDC_XLGDLG_EDT_U1I1, m_fU1I1);
DDX_Text(pDX, IDC_XLGDLG_EDT_U1U1, m_fU1U1);
DDX_Text(pDX, IDC_XLGDLG_EDT_U1U2, m_fU1U2);
DDX_Text(pDX, IDC_XLGDLG_EDT_U1U3, m_fU1U3);
DDX_Text(pDX, IDC_XLGDLG_EDT_U2I2, m_fU2I2);
DDX_Text(pDX, IDC_XLGDLG_EDT_U3I3, m_fU3I3);
DDX_Text(pDX, IDC_XLGDLG_EDT_PL, m_fPL);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CXltDlg, CDialog)
//{{AFX_MSG_MAP(CXltDlg)
ON_BN_CLICKED(IDC_YJBKDLG_BTN_EXIT, OnXltDlgBtnExit)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_YJBKDLG_BTN_MORE, OnXltdlgBtnMore)
ON_BN_CLICKED(IDC_XLTDLG_BTN_MORE, OnXltdlgBtnMore)
ON_BN_CLICKED(IDC_XLTDLG_BTN_EXIT, OnXltdlgBtnExit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CXltDlg message handlers
void CXltDlg::OnXltDlgBtnExit()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
void CXltDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
//画矩形
///////////////////////////////////////////////////////
pDC = new CClientDC(this);
CBrush brush(RGB(0,0,0));
CBrush * pOldBrush=(CBrush *) pDC->SelectObject (&brush);
CRect rect(left,top,right,bottom);
pDC->Rectangle (rect);
brush.DeleteObject ();
pDC->SelectObject (pOldBrush);
///////////////////////////////////////////////////////
//画坐标轴
///////////////////////////////////////////////////////
CPen pen;
pen.CreatePen(PS_SOLID,1,RGB(255,255,255));
pDC->SelectStockObject (NULL_BRUSH);
CPen *pOldpen=pDC->SelectObject (&pen);
//pDC->Ellipse (left+1,top+1,right-1,bottom-1);
pDC->MoveTo (left+1,centery);
pDC->LineTo (right-1,centery);
pDC->MoveTo (centerx,top+1);
pDC->LineTo (centerx,bottom-1);
//pDC->SelectObject (pOldpen);
///////////////////////////////////////////////////////
//画向量图
///strcpy(YjbkData[YjbkNum].jxfs ,"P33");
float fuau1=0.0,fuau2=0.0,fuau3=0.0,fuai1=0.0,fuai2=0.0,fuai3=0.0;
if(strcmp(YjbkData[YjbkNum].jxfs,"P33")==0||
strcmp(YjbkData[YjbkNum].jxfs,"Q33")==0 )fuau1=120.0;
else if(strcmp(YjbkData[YjbkNum].jxfs,"P34")==0||
strcmp(YjbkData[YjbkNum].jxfs,"Q34")==0)fuau1=90.0;
else if (strcmp(YjbkData[YjbkNum].jxfs,"Q90")==0||
strcmp(YjbkData[YjbkNum].jxfs,"Q60")==0 )fuau1=0.0;
else strcpy(YjbkData[YjbkNum].jxfs ,"P33");
DrawLine(fuau1,_T("U1"));
if(strcmp(YjbkData[YjbkNum].jxfs,"P33")!=0)
{
fuau2=fuau1-YjbkData[YjbkNum].fu1u2;
if(fuai2<0)fuai2+360;
DrawLine(fuau2,_T("U2"));
fuai2=fuau1-YjbkData[YjbkNum].fu1i2;
if(fuai2<0)fuai2+360;
DrawLine(fuai2,_T("I2"));
}
fuau3=fuau1-YjbkData[YjbkNum].fu1u3;
if(fuai3<0)fuai3+360;
DrawLine(fuau3,_T("U3"));
fuai1=fuau1-YjbkData[YjbkNum].fu1i1_xlt;
if(fuai1<0)fuai1+360;
DrawLine(fuai1,_T("I1"));
fuai3=fuau1-YjbkData[YjbkNum].fu1i3;
if(fuai3<0)fuai3+360;
DrawLine(fuai3,_T("I3"));
//}
//////////////////////////////////////////////////////
delete pDC;
// Do not call CDialog::OnPaint() for painting messages
}
void CXltDlg::DrawLine(float jd, CString s)
{
CPen Linepen;
CFont font;
int endx,endy;
if(s==_T("U1"))
{
Linepen.CreatePen (PS_SOLID,1,RGB(255,255,0));
pDC->SetTextColor(RGB(255,255,0));
endx=centerx+Ru*cos(rad(jd));
endy=centery-Ru*sin(rad(jd));
}
if(s==_T("U2"))
{
Linepen.CreatePen (PS_SOLID,1,RGB(0,255,0));
pDC->SetTextColor(RGB(0,255,0));
endx=centerx+Ru*cos(rad(jd));
endy=centery-Ru*sin(rad(jd));
}
if(s==_T("U3"))
{
Linepen.CreatePen (PS_SOLID,1,RGB(255,0,0));
pDC->SetTextColor(RGB(255,0,0));
endx=centerx+Ru*cos(rad(jd));
endy=centery-Ru*sin(rad(jd));
}
if(s==_T("I1"))
{
Linepen.CreatePen (PS_SOLID,1,RGB(255,255,0));
pDC->SetTextColor(RGB(255,255,0));
endx=centerx+Ri*cos(rad(jd));
endy=centery-Ri*sin(rad(jd));
}
if(s==_T("I2"))
{
Linepen.CreatePen (PS_SOLID,1,RGB(0,255,0));
pDC->SetTextColor(RGB(0,255,0));
endx=centerx+Ri*cos(rad(jd));
endy=centery-Ri*sin(rad(jd));
}
if(s==_T("I3"))
{
Linepen.CreatePen (PS_SOLID,1,RGB(255,0,0));
pDC->SetTextColor(RGB(255,0,0));
endx=centerx+Ri*cos(rad(jd));
endy=centery-Ri*sin(rad(jd));
}
font.CreateFont (10,5,5,0,FW_NORMAL,FALSE,FALSE,0,NULL,NULL,CLIP_DEFAULT_PRECIS,NULL,NULL,_T("Arial"));
pDC->SelectObject (&Linepen);
pDC->SelectObject (&font);
pDC->MoveTo(centerx,centery);
pDC->LineTo(endx,endy);
pDC->MoveTo (endx,endy);
pDC->LineTo (endx-5*sin(rad(60-jd)),endy+5*cos(rad(60-jd)));
pDC->MoveTo (endx,endy);
pDC->LineTo (endx-5*sin(rad(120-jd)),endy+5*cos(rad(120-jd)));
pDC->SetBkColor (RGB(0,0,0));
pDC->ExtTextOut(endx+2,endy+2,ETO_CLIPPED,NULL,s,NULL);
}
BOOL CXltDlg::OnInitDialog()
{
CDialog::OnInitDialog();
/* TODO: Add extra initialization here1321
CString s;
s.Format(_T("%f"),a);
AfxMessageBox(s);*/
float cfuau1=0.0,cfuau2=0.0,cfuau3=0.0,cfuai1=0.0,cfuai2=0.0,cfuai3=0.0;
if(strcmp(YjbkData[YjbkNum].jxfs,"P33")==0||
strcmp(YjbkData[YjbkNum].jxfs,"Q33")==0 )cfuau1=120.0;
else if(strcmp(YjbkData[YjbkNum].jxfs,"P34")==0||
strcmp(YjbkData[YjbkNum].jxfs,"Q34")==0)cfuau1=90.0;
else if (strcmp(YjbkData[YjbkNum].jxfs,"Q90")==0||
strcmp(YjbkData[YjbkNum].jxfs,"Q60")==0 )cfuau1=0.0;
else strcpy(YjbkData[YjbkNum].jxfs ,"P33");
cfuau2=cfuau1-YjbkData[YjbkNum].fu1u2;
cfuai2=cfuau1-YjbkData[YjbkNum].fu1i2;
cfuau3=cfuau1-YjbkData[YjbkNum].fu1u3;
cfuai3=cfuau1-YjbkData[YjbkNum].fu1i3;
m_fU1I1=YjbkData[YjbkNum].fu1i1_xlt ;
m_fU1U1=YjbkData[YjbkNum].fu1u1 ;
m_fU1U2=YjbkData[YjbkNum].fu1u2;
m_fU1U3=YjbkData[YjbkNum].fu1u3;
m_fU2I2=(cfuau2-cfuai2)<0?(cfuau2-cfuai2+360):(cfuau2-cfuai2);//YjbkData[YjbkNum].fu2i2 ;
m_fU3I3=(cfuau3-cfuai3)<0?(cfuau3-cfuai3+360):(cfuau3-cfuai3);//YjbkData[YjbkNum].fu3i3 ;
m_fPL=YjbkData[YjbkNum].f;
m_sDLXX=_T("正");
m_sDYXX=_T("逆");
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CXltDlg::OnXltdlgBtnMore()
{
// TODO: Add your control notification handler code here
CXltFZDlg dlg;
dlg.m_bFullScreen = FALSE;
dlg.DoModal();
}
void CXltDlg::OnXltdlgBtnExit()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -