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

📄 myview1.cpp

📁 DMC VC++ 的程序  给大学生毕业用 啦 其它不多说了 用了就知道!
💻 CPP
字号:
// MyView1.cpp : implementation file
//

#include "stdafx.h"
#include "DMC.h"
#include "MyView1.h"
#include "DMCDoc.h"
#include "fun_dmcsim.hpp"


#include "matlab.hpp"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMyView1

IMPLEMENT_DYNCREATE(CMyView1, CView)

CMyView1::CMyView1()
{
	pen1.CreatePen(PS_SOLID,2,RGB(0,0,0));
	pen2.CreatePen(PS_DOT,1,RGB(255,71,170));
	pen3.CreatePen(PS_SOLID,2,RGB(0,255,0));
	pen4.CreatePen(PS_SOLID,2,RGB(0,0,255));
	pen5.CreatePen(PS_SOLID,2,RGB(255,0,0));


	flagRY=FALSE;
}

CMyView1::~CMyView1()
{
}


BEGIN_MESSAGE_MAP(CMyView1, CView)
	//{{AFX_MSG_MAP(CMyView1)
	ON_COMMAND(ID_RUN, OnRun)
	ON_COMMAND(ID_CREATE, OnCreate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyView1 drawing

void CMyView1::OnDraw(CDC* pDC)
{
	
   	CDMCDoc* pDoc = (CDMCDoc*)GetDocument();


	ASSERT_VALID(pDoc);

	DrawCoordinate1();
	DrawCoordinate2();

	if(pDoc->DocFlag1==TRUE)
	{
	
		DrawS();
	}


	if(flagRY==TRUE)
	{
		DrawRY();
		DrawU();
	}
	
}

/////////////////////////////////////////////////////////////////////////////
// CMyView1 diagnostics

#ifdef _DEBUG
void CMyView1::AssertValid() const
{
	CView::AssertValid();
}

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

/////////////////////////////////////////////////////////////////////////////
// CMyView1 message handlers

void CMyView1::DrawCoordinate1()
{
	 CDC *pDC=GetDC();
	 pDC->SelectObject(&pen1);

	 pDC->MoveTo(25,50);
	 pDC->LineTo(25,300);//第一个图的纵坐标
	 pDC->LineTo(425,300);//第一个图的横坐标

	 pDC->LineTo(420,295);
	 pDC->MoveTo(425,300);
	 pDC->LineTo(420,305);//横坐标的小箭头

	  pDC->MoveTo(25,50);
	  pDC->LineTo(20,55);
	  pDC->MoveTo(25,50);
	  pDC->LineTo(30,55);//纵坐标的小箭头


	  for(int i=1;i<5;i++)
	  {
	  
	  pDC->MoveTo(25+80*i,300);
	  pDC->LineTo(25+80*i,295);      //画横坐标的小杠
	  }


	  for(i=1;i<5;i++)
	  {
		  pDC->MoveTo(25,50+50*i);
		  pDC->LineTo(30,50+50*i);   //画纵坐标的小杠

	  }


	  pDC->TextOut(30,310,"0");
	  pDC->TextOut(100,310,"10");
	  pDC->TextOut(180,310,"20");
	  pDC->TextOut(260,310,"30");
	  pDC->TextOut(340,310,"40");
	  pDC->TextOut(420,310,"50");


	  pDC->TextOut(0,300,"-0.2");
	  pDC->TextOut(0,250,"0");
	  pDC->TextOut(0,200,"0.2");
	  pDC->TextOut(0,150,"0.4");
      pDC->TextOut(0,100,"0.6");
	  pDC->TextOut(0,50,"0.8");


	  pDC->TextOut(0,20,"输出");
	  pDC->TextOut(400,350,"时间0.1s");



	 





	
	 
	 
	 ReleaseDC(pDC);

}

void CMyView1::DrawCoordinate2()
{
	 CDC *pDC=GetDC();
	 CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
	 pDC->SelectObject(&pBrush);
	 pDC->SelectObject(&pen1);
	 pDC->Rectangle(550,20,910,180);//第二个坐标的外框
     pDC->Rectangle(550,220,910,380); //第三个坐标的外框

	 pDC->SelectObject(&pen2);
	 
	 for(int i=1;i<6;i++)  ///第二个坐标的网格线
	 {
		 pDC->MoveTo(550+i*60,20);
		 pDC->LineTo(550+i*60,180);
	 }

	 for(i=1;i<4;i++)
	 {
		 pDC->MoveTo(550,20+40*i);
		 pDC->LineTo(910,20+40*i);
	 }




	 for(i=1;i<6;i++)     //////第三个坐标的网格线
	 {
		 pDC->MoveTo(550+i*60,220);
		 pDC->LineTo(550+i*60,380);
	 }


	  for(i=1;i<4;i++)
	 {
		 pDC->MoveTo(550,220+40*i);
		 pDC->LineTo(910,220+40*i);
	 }


	  pDC->TextOut(520,215,"4");//第二个坐标纵坐标标识
	  pDC->TextOut(520,255,"3");
	  pDC->TextOut(520,295,"2");
	  pDC->TextOut(520,335,"1");
	  pDC->TextOut(520,375,"0");


	  pDC->TextOut(520,15,"1.5");//第三个坐标纵坐标标识
	  pDC->TextOut(520,59,"1");
	  pDC->TextOut(520,95,"0.5");
	  pDC->TextOut(520,135,"0");
	  pDC->TextOut(520,175,"-0.5");


	  pDC->TextOut(550,180,"0");//第二个坐标横坐标标识
	  pDC->TextOut(610,180,"1");
	  pDC->TextOut(670,180,"2");
	  pDC->TextOut(730,180,"3");
	  pDC->TextOut(790,180,"4");
	  pDC->TextOut(850,180,"5");
	  pDC->TextOut(910,180,"6");


	  pDC->TextOut(550,380,"0");//第三个坐标横坐标标识
	  pDC->TextOut(610,380,"1");
	  pDC->TextOut(670,380,"2");
	  pDC->TextOut(730,380,"3");
	  pDC->TextOut(790,380,"4");
	  pDC->TextOut(850,380,"5");
	  pDC->TextOut(910,380,"6");



	  pDC->TextOut(400,15,"给定值:");
	  pDC->SelectObject(&pen3);
	  pDC->MoveTo(460,24);
	  pDC->LineTo(500,24);

	  pDC->TextOut(400,35,"输出值:");
	  pDC->SelectObject(&pen4);
	  pDC->MoveTo(460,45);
	  pDC->LineTo(500,45);

	  pDC->TextOut(440,220,"输入值");
	  pDC->TextOut(930,380,"时间S");
	   pDC->TextOut(930,180,"时间S");


	  ReleaseDC(pDC);

}

void CMyView1::OnRun() 
{

	flagRY=TRUE;

	DrawRY();
	DrawU();
	
	
}

void CMyView1::DrawS()
{


	CDC *pDC=GetDC();

	CString str;
	mwArray s,u,r,y,count1,size1,size2;
	double ds[51], du,dr,dy,dcount1,dsize1,dsize2;
	s=fun_dmcsim(&u,&r,&y,1);
	POINT pt[51];


	count1=length(s);

    dcount1=count1.ExtractScalar(1);
	
	for(int i=1;i<=dcount1;i++)
	{
		ds[i-1]=s.ExtractScalar(i);

	}
	
	for(i=0;i<dcount1;i++)
	{
		pt[i].x=25+i*8;
		pt[i].y=250-ds[i]*250;
	}

	pDC->SelectObject(&pen3);
	pDC->Polyline(pt,50);

	


	




	ReleaseDC(pDC);
}

void CMyView1::DrawRY()
{

		CDC *pDC=GetDC();

	CString str;
	mwArray s,u,r,y,count1,count2;
	double  dr[61],dy[61],dcount1,dcount2;
	s=fun_dmcsim(&u,&r,&y,1);
	POINT pt[61];
	POINT pt1[61];


	count1=length(r);

    dcount1=count1.ExtractScalar(1);
	for(int i=1;i<=dcount1;i++)
	{
		dr[i-1]=r.ExtractScalar(i);

	}
	for(i=0;i<dcount1;i++)
	{
		pt[i].x=550+i*6;
		pt[i].y=140-dr[i]*80;
	}

	pDC->SelectObject(&pen3);

	pDC->Polyline(pt,61);/////////画给定值曲线


      count2=length(y);

	  dcount2=count2.ExtractScalar(1);


	  for( i=1;i<=dcount2;i++)
	{
		dy[i-1]=y.ExtractScalar(i);

	}

	  	for(i=0;i<dcount1;i++)
	{
		pt1[i].x=550+i*6;
		pt1[i].y=140-dy[i]*80;
	}


		pDC->SelectObject(&pen4);

		pDC->Polyline(pt1,61);////管理画输出曲线 
		ReleaseDC(pDC);
	   


}

void CMyView1::DrawU()
{
	CDC *pDC=GetDC();



	CString str;
	mwArray s,u,r,y,count1;
	double  du[61],dcount1;
	s=fun_dmcsim(&u,&r,&y,1);
	POINT pt[61];


	count1=length(u);

    dcount1=count1.ExtractScalar(1);
	

	

	
	for(int i=1;i<=dcount1;i++)
	{   
		
		du[i-1]=u.ExtractScalar(i);
        
	
	}

	
	for(i=0;i<dcount1;i++)
	{
		pt[i].x=550+i*6;
		pt[i].y=380-du[i]*40;
	}


	pDC->SelectObject(&pen5);

		pDC->Polyline(pt,61);
	ReleaseDC(pDC);

}

void CMyView1::OnCreate() 
{
	
    DrawS();
	
	
}

⌨️ 快捷键说明

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