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

📄 xbdlg.cpp

📁 本项目是我工作时候应公司需求开发的 开发工具是EVC++4.0
💻 CPP
字号:
// XBDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Wonder.h"
#include "XBDlg.h"
#include "DataStruct.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;
/////////////////////////////////////////////////////////////////////////////
// CXBDlg dialog


CXBDlg::CXBDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CXBDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CXBDlg)
	m_mapdata = 1;
	m_ui = 3;
	//}}AFX_DATA_INIT
	Select=_T("U1");
}


void CXBDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CXBDlg)
	DDX_Control(pDX, IDC_XLT_DLG_CBX_MAP, m_c_mapdata);
	DDX_Control(pDX, IDC_XLT_DLG_CBX_UI, m_c_ui);
	DDX_CBIndex(pDX, IDC_XLT_DLG_CBX_MAP, m_mapdata);
	DDX_CBIndex(pDX, IDC_XLT_DLG_CBX_UI, m_ui);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CXBDlg, CDialog)
	//{{AFX_MSG_MAP(CXBDlg)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_XBDLG_BTN_EXIT, OnXbdlgBtnExit)
	//ON_BN_CLICKED(IDC_XBDLG_BTN_U1, OnXbdlgBtnU1)
	//ON_BN_CLICKED(IDC_XBDLG_BTN_U2, OnXbdlgBtnU2)
	//ON_BN_CLICKED(IDC_XBDLG_BTN_U3, OnXbdlgBtnU3)
	//ON_BN_CLICKED(IDC_XBDLG_BTN_I3, OnXbdlgBtnI3)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CXBDlg message handlers

void CXBDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	pDC=new CClientDC(this);

	int b =m_c_mapdata.GetCurSel();
if(b==1)
{
	CBrush brush(RGB(0,0,0));
	CBrush*pOldBrush=(CBrush*)pDC->SelectObject(&brush);
	CRect rect(2,2,236,Bottom_xb);
	pDC->Rectangle(rect);
	brush.DeleteObject();
	pDC->SelectObject(pOldBrush);


	////////////////////////////////
	CPen pen;
	CFont font;
	pen.CreatePen(PS_SOLID,1,RGB(255,255,255));
	pDC->SelectStockObject(NULL_BRUSH);
	CPen*pOldPen=pDC->SelectObject(&pen);

	//坐标轴
	pDC->MoveTo(20,215);
	pDC->LineTo(Bottom_xb,215);
	pDC->MoveTo(20,215);
	pDC->LineTo(20,5);
	
	////纵坐标轴参数
	for(int i=0;i<=10;i++)
	{
		CString s,pec;
		pec=_T("%");
		int j=i*10;
		s.Format(_T("%d"),j);
		s=s+pec;
		pDC->MoveTo(20,215-i*20);
		pDC->LineTo(23,215-i*20);
		font.CreateFont (8,3,0,0,FW_NORMAL,FALSE,FALSE,0,NULL,NULL,CLIP_DEFAULT_PRECIS,NULL,NULL,_T("oo"));		
	    pDC->SelectObject (&pen);
	    pDC->SelectObject (&font);
		pDC->SetTextColor (RGB(0,0,255));
		pDC->SetBkColor (RGB(0,0,0));	 
	    pDC->ExtTextOut(4,215-i*20,ETO_CLIPPED,NULL,s,NULL);
	}

	/////横坐标轴参数	
	for(i=1;i<=21;i++)
	{
		CString s;
		s.Format(_T("%d"),i);		
	    pDC->ExtTextOut(15+10*i,219,ETO_CLIPPED,NULL,s,NULL);
		
	}
	

	//纵坐标箭头
	pDC->MoveTo(20,5);
	pDC->LineTo(16,5+(float)(8*cos(rad(30))));
	pDC->MoveTo(20,5);
	pDC->LineTo(24,5+(float)(8*cos(rad(30))));
	
	//横坐标箭头
	pDC->MoveTo(235,215);
	pDC->LineTo(235-(float)8*cos(rad(30)),219);
	pDC->MoveTo(235,215);
	pDC->LineTo(235-8*cos(rad(30)),211);


	int a = m_c_ui.GetCurSel();
    switch (a)
	{
	    case 0:Select=_T("I1");	break;
		case 1:Select=_T("I2");	break;
		case 2:Select=_T("I3");	break;
		case 3:Select=_T("U1");	break;
		case 4:Select=_T("U2");	break;
		case 5:Select=_T("U3");	break;
	}

	DrawXB(Select);
}
else
{
	DrawData();
}

	delete pDC;
	// Do not call CDialog::OnPaint() for painting messages
}

void CXBDlg::OnXbdlgBtnExit() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();
		
}

void CXBDlg::DrawXB(CString s)
{
	CPen xbpen;
	CFont text;
	int per=0;
	text.CreateFont(30,15,0,0,FW_NORMAL,FALSE,FALSE,0,NULL,NULL,CLIP_DEFAULT_PRECIS,NULL,NULL,_T("oo"));
	pDC->SelectObject (&text);
	if(s==_T("U1"))
	{
		xbpen.CreatePen (PS_SOLID,5,RGB(255,255,0));
		per=0;
		pDC->SetTextColor (RGB(255,255,0));
	    
	}
	if(s==_T("U2"))
	{
		xbpen.CreatePen (PS_SOLID,5,RGB(0,255,0));
		per=264/6;
		pDC->SetTextColor (RGB(0,255,0));
	    
	}
	if(s==_T("U3"))
	{
		xbpen.CreatePen (PS_SOLID,5,RGB(255,0,0));
		per=2*264/6;
		pDC->SetTextColor (RGB(255,0,0));	    
	}
	if(s==_T("I1"))
	{
		xbpen.CreatePen (PS_SOLID,5,RGB(255,255,0));
		per=3*264/6;
		pDC->SetTextColor (RGB(255,255,0));
	    
	}
	if(s==_T("I2"))
	{
		xbpen.CreatePen (PS_SOLID,5,RGB(0,255,0));
		per=4*264/6;
		pDC->SetTextColor (RGB(0,255,0));
	    
	}
	if(s==_T("I3"))
	{
		xbpen.CreatePen (PS_SOLID,5,RGB(255,0,0));
		per=5*264/6;
		pDC->SetTextColor (RGB(255,0,0));	    
	}
	pDC->SetBkColor (RGB(0,0,0));	         
	pDC->ExtTextOut(190,5,ETO_CLIPPED,NULL,s,NULL);

	pDC->SelectObject(&xbpen);
    int uiselect = m_c_ui.GetCurSel();
     switch (uiselect)
	{
	    case 0:uiselect=4;break;
		case 1:uiselect=5;break;
		case 2:uiselect=6;break;
		case 3:uiselect=0;break;
		case 4:uiselect=1;break;
		case 5:uiselect=2;break;
	}
	int hei=215;
	for(int i=1;i<=21;i++)
	{
		//YjbkData[YjbkNum].harm_per [per+i-1];等待处理
		hei=215-(215-15)*(YjbkData[YjbkNum].harm_per [uiselect*24+i]/100.0f)*100.0f/100.0f;
		pDC->MoveTo(17+i*10,215);
		pDC->LineTo(17+i*10,hei);		
	}
}

void CXBDlg::DrawData()
{
	CBrush brush(RGB(255,255,255));
	CBrush*pOldBrush=(CBrush*)pDC->SelectObject(&brush);
	CRect rect(2,2,236,Bottom_xb);
	pDC->Rectangle(rect);
	brush.DeleteObject();
	pDC->SelectObject(pOldBrush);
	int Height=(Bottom_xb-Top_xb)/12;
	int Width=(Right_xb-Left_xb)/4;
	int CiNum=0;
	CString s,s2;
	
	for(int j=0;j<12;j++)
	{
		for(int i=0;i<4;i++)
	   {
	     pDC->Rectangle (Left_xb+i*Width,Top_xb+j*Height,(i+1)*Width,(j+1)*Height);
		 
	   }
	}
	int   uiselect = m_c_ui.GetCurSel();
    switch (uiselect)
	 {
	    case 0:uiselect=4;break;
		case 1:uiselect=5;break;
		case 2:uiselect=6;break;
		case 3:uiselect=0;break;
		case 4:uiselect=1;break;
		case 5:uiselect=2;break;
	}	

	pDC->ExtTextOut (Left_xb+10,Top_xb+3,ETO_CLIPPED,NULL,_T("失真度:"),NULL);
	s2.Format(_T("%5.2f"),YjbkData[YjbkNum].harm_per[uiselect*24+     23]);
	pDC->ExtTextOut (Left_xb+Width+10,Top_xb+3,ETO_CLIPPED,NULL,s2,NULL);	
	
	for(int i=1;i<12;i++)
	{
		s.Format (_T("%d次:"),++CiNum);
		pDC->ExtTextOut (Left_xb+10,Top_xb+3+i*Height,ETO_CLIPPED,NULL,s,NULL);
		s2.Format(_T("%5.2f"),YjbkData[YjbkNum].harm_per[uiselect*24+CiNum]);
		pDC->ExtTextOut (Left_xb+Width+10,Top_xb+3+i*Height,ETO_CLIPPED,NULL,s2,NULL);
	
	}
	for(i=1;i<11;i++)
	{
		s.Format (_T("%d次:"),++CiNum);
		pDC->ExtTextOut (Left_xb+10+2*Width,Top_xb+3+i*Height,ETO_CLIPPED,NULL,s,NULL);
		s2.Format(_T("%5.2f"),YjbkData[YjbkNum].harm_per[uiselect*24+CiNum]);
		pDC->ExtTextOut (Left_xb+3*Width+10,Top_xb+3+i*Height,ETO_CLIPPED,NULL,s2,NULL);	
	}	    
}

⌨️ 快捷键说明

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