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

📄 fueleconomyview.cpp

📁 主要用于商用车车辆燃油经济性的计算和一些参数影响的分析
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// FuelEconomyView.cpp : implementation of the CFuelEconomyView class
//

#include "stdafx.h"
#include "FuelEconomy.h"
#include "FuelEconomyDoc.h"
#include "FuelEconomyView.h"

#include "CanShuLuRu.h"
#include "math.h"
#include "DataLuruDlg.h"
#include "DataDuruDlg.h"
#include "DataShuChuDlg.h"
#include "GongKAnsysDlg.h"
#include "GongKuangAnsys1Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFuelEconomyView

IMPLEMENT_DYNCREATE(CFuelEconomyView, CView)

BEGIN_MESSAGE_MAP(CFuelEconomyView, CView)
	//{{AFX_MSG_MAP(CFuelEconomyView)
	ON_COMMAND(ID_KAISHI, OnKaishi)
	ON_UPDATE_COMMAND_UI(ID_JISUANCHULI, OnUpdateJisuanchuli)
	ON_COMMAND(ID_MEN_I0, OnMenI0)
	ON_COMMAND(ID_MENU_CD, OnMenuCd)
	ON_COMMAND(ID_MENU_F, OnMenuF)
	ON_COMMAND(ID_MENU_M, OnMenuM)
	ON_COMMAND(ID_MENU_NT, OnMenuNt)
	ON_UPDATE_COMMAND_UI(ID_MEN_I0, OnUpdateMenI0)
	ON_UPDATE_COMMAND_UI(ID_MENU_CD, OnUpdateMenuCd)
	ON_UPDATE_COMMAND_UI(ID_MENU_F, OnUpdateMenuF)
	ON_UPDATE_COMMAND_UI(ID_MENU_M, OnUpdateMenuM)
	ON_UPDATE_COMMAND_UI(ID_MENU_NT, OnUpdateMenuNt)
	ON_COMMAND(ID_MENU_A, OnMenuA)
	ON_UPDATE_COMMAND_UI(ID_MENU_A, OnUpdateMenuA)
	ON_COMMAND(ID_DURU, OnDuru)
	ON_COMMAND(ID_SHOUDONGLURU, OnShoudongluru)
	ON_COMMAND(ID_JISUANDENG, OnJisuandeng)
	ON_UPDATE_COMMAND_UI(ID_JISUANDENG, OnUpdateJisuandeng)
	ON_COMMAND(ID_JISUANLIU, OnJisuanliu)
	ON_UPDATE_COMMAND_UI(ID_JISUANLIU, OnUpdateJisuanliu)
	ON_COMMAND(ID_JISUANSI, OnJisuansi)
	ON_UPDATE_COMMAND_UI(ID_JISUANSI, OnUpdateJisuansi)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFuelEconomyView construction/destruction
double g,f;
int xm0=0,xm=0,TeDone=0,JiS=0;//TeDone万有特性拟合是否完成标识符,JiS计算标识符
const double PI=3.14159;
COLORREF colb;
double HI,poix[10000],poiy[10000],poix0[10000],poiy0[10000],poix1[1000],poiy1[1000];
const int MM=15;
int K;//录入万有特性试验数据的个数
double P[100],G[100],Z[100],X[100][MM+1],Y[100],AA[MM+1][MM+2],XTX[MM+1][MM+1],XTY[MM+1];
float NN[100];
double x[16],Ge;
int menuItem=0;//分析项目选择标识
int GKAnsys;//分析工况选择标识0等速1四工况2六工况
double vbox;// 存储等速时的计算速度
float Kr=1.02,Pem=3;//功率修正系数;动力转向泵损失2.0--3.5kw+发电机损失1.5--3.0kw+被动式空调一般损耗发动机的10%+其它损失
extern double m,A,Cd,i0,ig[10],If,Iw,R,be0,M,Delta[10],nT,rou,PpP[100],GgG[100];//M为修正后的整车质量  Delta存放旋转质量换算系数
extern int Uamax,Memax,DangWShu,CheXing,N,GongKuang,Nmax,Nmin,DuQv;//DangWShu 挡位数,ChengXing车型代码,N为乘员数
extern CString JiXing;
extern float NnN[100];
double ua_min[10];   //最低车速(估算)
double ua_max[10];	//最高车速(估算)
int J=0;//标识符,记录等速工况下的采样点个数;
int ZHIJIE;//标识直接挡
extern double Deng[],Liu,Si;
CFuelEconomyView::CFuelEconomyView()
{
	// TODO: add construction code here
	g=9.8;
	f=0.018;
	int i;
	for(i=0;i<10000;i++){
		poix[i]=0;poiy[i]=0;
	   poix0[i]=0;poiy0[i]=0;
	   poix0[i]=0;poiy1[i]=0;
	}
	colb=RGB(220,220,220);HI=38;

}

CFuelEconomyView::~CFuelEconomyView()
{
}

BOOL CFuelEconomyView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CFuelEconomyView drawing

void CFuelEconomyView::OnDraw(CDC* pDC)
{
	
	extern int GongKuang;
	CFuelEconomyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	CBitmap Bitmap,*pOldBitmap;
	CDC MemDC;
	Bitmap.LoadBitmap(IDB_BITMAP1);
	MemDC.CreateCompatibleDC(pDC);
	pOldBitmap=MemDC.SelectObject(&Bitmap);
	pDC->BitBlt(0,0,1150,800,&MemDC,0,0,SRCCOPY);
	MemDC.SelectObject(pOldBitmap);

	if(xm==0){}
	else{
	CRect rect;
	CFont fnBig;
    CFont*poldFont;
	fnBig.CreatePointFont(int(HI*8.0),"Arial",pDC);
	poldFont=pDC->SelectObject(&fnBig);	
	FillRect(pDC,colb,(0,0),1500,1500);
    
	GetClientRect(&rect);
	pDC->SetMapMode(MM_LOMETRIC);
	pDC->SetViewportOrg(int(rect.right/10),int(rect.bottom/1.2));
	pDC->SelectObject(poldFont);
	if(GongKuang==0){HuaDengTu(pDC);}
	if(GongKuang==1){HuaSiTu(pDC);}
	if(GongKuang==2){HuaLiuTu(pDC);}


	for(int i=0;i<10000;i++){
		poix[i]=0;poiy[i]=0;
        poix0[i]=0;poiy0[i]=0;
	}
	xm=0;
	}
	if(menuItem==0){}
	else{
	CRect rect;
	CFont fnBig;
    CFont*poldFont;
	fnBig.CreatePointFont(int(HI*8.0),"Arial",pDC);
	poldFont=pDC->SelectObject(&fnBig);	
	FillRect(pDC,colb,(0,0),1500,1500);
    
	GetClientRect(&rect);
	pDC->SetMapMode(MM_LOMETRIC);
	pDC->SetViewportOrg(int(rect.right/10),int(rect.bottom/1.2));
	pDC->SelectObject(poldFont);
	if(menuItem==1){HuaMTu(pDC);}
	if(menuItem==2){HuaCdTu(pDC);}
	if(menuItem==3){HuafTu(pDC);}
	if(menuItem==4){HuanTTu(pDC);}
	if(menuItem==5){HuaI0Tu(pDC);}
		if(menuItem==6){HuaATu(pDC);}
   menuItem=0;
   
	for(int i=0;i<10000;i++){
		poix1[i]=0;poiy1[i]=0;
       
	}
	}
}
/////////////////////////////////////////////////////////////////////////////
// CFuelEconomyView printing

BOOL CFuelEconomyView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CFuelEconomyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CFuelEconomyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CFuelEconomyView diagnostics

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

void CFuelEconomyView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CFuelEconomyDoc* CFuelEconomyView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFuelEconomyDoc)));
	return (CFuelEconomyDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CFuelEconomyView message handlers
void CFuelEconomyView::OnKaishi()
{
	// TODO: Add your command handler code here

    CCanShuLuRu dlg;

	dlg.DoModal();
}




/////////////////////////////////////////////////////////////////////////////
//基本公式


float CFuelEconomyView::BaseN(double v, int DangW)//转速
{ 
	extern double R,ig[10];
	extern int Nmin,Nmax;
	float Nn;
	Nn=(float)((v*i0*ig[DangW])/(0.377*R));
	if(Nn<Nmin||Nn>Nmax){return (float)Nmin;}
	else{
		return Nn;}

}

double CFuelEconomyView::BasePe(double v, int DangW,double a)//阻力功率
{   extern double f,Cd,A,nT,Delta[10];
    double Pe;
	Pe=((M*g*f*v)/3600+(Cd*A*v*v*v)/76140+((M*v*a*Delta[DangW])/3600))/nT;
	return Pe*Kr+Pem;

}
double CFuelEconomyView::Qt(double Pe, double ge)//单位时间燃油消耗量 mL/s
{
	double Qt;
	extern double rou;
	Qt=(Pe*ge)/(367.1*rou);
	return Qt;

}
/////////////////////////////////////////////////////////////////////////////
//基本工况
double CFuelEconomyView::DengGK(double v, int DangW,double s)//等速过程
{
	extern double rou;
    double Qa,P,b;
	float n;
	n=BaseN(v,DangW);
    P=BasePe(v,DangW,0);
	b=gee(P,n);
	Qa=(P*b*s)/(102*rou*v);//单位ml
    return Qa;

}

double CFuelEconomyView::JiaGK(double v0, double vt, int DangW,double aj)//等加速过程
{   
	extern double m,A,Cd,ig[10],If,Iw,R,be0,M,a,Delta[10],nT,rou;
	double Q[10000],Qbox,DelT,Qb=0,v;
	int j,k;
	DelT=0.05/(3.6*aj);
	Qbox=0;//  单位s
	v=v0;
	for(k=0;k<10000;k++){
		Q[k]=0;
	}

	for(j=0;v<vt;j++){
	
        Qbox=Qt(BasePe(v,DangW,aj),gee(BasePe(v,DangW,aj),BaseN(v,DangW)));
		Qbox+=Qt(BasePe((v+1),DangW,aj),gee(BasePe((v+1),DangW,aj),BaseN((v+1),DangW)));
		Q[j]=(Qbox*DelT)/2;
		v+=0.05;
	}
	for(k=0;k<j;k++){
		Qb+=Q[k];
	}
    return Qb;
}

double CFuelEconomyView::DaiGK(double t)//减速或怠速过程
{
	extern double be0;
	double Qc;
	Qc=be0*t;
    return Qc;
}
/////////////////////////////////////////////////////////////////////////////
//循环工况

double CFuelEconomyView::LiuGongKuang(int DangW)//六工况
{
	extern double ig[10];
	double Qbox=0,QLiu;
    if(ig[DangW]==1){
		Qbox+=DengGK(40,DangW,125);
		Qbox+=JiaGK(40,50,DangW,0.2);
		Qbox+=DengGK(50,DangW,250);
		Qbox+=JiaGK(50,60,DangW,0.17);
		Qbox+=DengGK(60,DangW,250);
		Qbox+=DaiGK(21.6);
		QLiu=(100*Qbox)/1350;// L/100km
	}
	return QLiu;
}

double CFuelEconomyView::SiGongKuang(int DangWShu)//四工况
{
	double Qbox=0,QSi;
	if(DangWShu<5){
		Qbox+=JiaGK(0,7,1,(7-0)/(3.6*5.6));
		Qbox+=JiaGK(7,14,2,(14-7)/(3.6*8.8));
		Qbox+=JiaGK(14,20,3,(20-14)/(3.6*11.8));
		Qbox+=JiaGK(20,25,4,(25-20)/(3.6*11.4));
		Qbox+=DengGK(25,4,120);
		Qbox+=JiaGK(25,40,4,(40-25)/(3.6*17.7));
		Qbox+=DaiGK((3.6*270)/40);
	}
	else{
		Qbox+=JiaGK(0,7,2,(7-0)/(3.6*5.6));
		Qbox+=JiaGK(7,14,3,(14-7)/(3.6*8.8));
		Qbox+=JiaGK(14,20,4,(20-14)/(3.6*11.8));
		Qbox+=JiaGK(20,25,5,(25-20)/(3.6*11.4));
		Qbox+=DengGK(25,5,120);
		Qbox+=JiaGK(25,40,5,(40-25)/(3.6*17.7));
		Qbox+=DaiGK((3.6*270)/40);
	}
	QSi=(100*Qbox)/700;
	return QSi;

}

double CFuelEconomyView::DengGongKuang(double v,int DangW)//等速工况
{

	double Qbox=0,Qdeng;
	
	  Qbox=DengGK(v,DangW,500);
      Qdeng=(100*Qbox)/500;// L/100km

	 return Qdeng;
}
/////////////////////////////////////////////////////////////////////


void CFuelEconomyView::OnJisuandeng() 
{
	// TODO: Add your command handler code here
		xm=1;
    GongKuang=0;
	Deng[0]=DengGongKuang(40,ZHIJIE);
	Deng[1]=DengGongKuang(50,ZHIJIE);
	Deng[2]=DengGongKuang(60,ZHIJIE);
	Deng[3]=DengGongKuang(70,ZHIJIE);
	Deng[4]=DengGongKuang(80,ZHIJIE);
	Deng[5]=DengGongKuang(90,ZHIJIE);
	InvalidateRect(NULL,FALSE);
	
}

void CFuelEconomyView::OnUpdateJisuandeng(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
		pCmdUI->Enable((xm0>0&&TeDone>0)?TRUE:FALSE);
	
	
}

void CFuelEconomyView::OnJisuanliu() 
{
	// TODO: Add your command handler code here
		xm=1;
Liu=LiuGongKuang(ZHIJIE);
	GongKuang=2;
	InvalidateRect(NULL,FALSE);
	
}

void CFuelEconomyView::OnUpdateJisuanliu(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
		pCmdUI->Enable((xm0>0&&TeDone>0&&CheXing==0)?TRUE:FALSE);
	
	
}

void CFuelEconomyView::OnJisuansi() 
{
	// TODO: Add your command handler code here
		xm=1;
Si=SiGongKuang(DangWShu);
	GongKuang=1;
	InvalidateRect(NULL,FALSE);
	
}

void CFuelEconomyView::OnUpdateJisuansi(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
		pCmdUI->Enable((xm0>0&&TeDone>0&&CheXing==1)?TRUE:FALSE);
	
	
}


void CFuelEconomyView::OnUpdateJisuanchuli(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable((xm0>0&&TeDone>0)?TRUE:FALSE);
	
	if(xm0==0||TeDone==0){MessageBox("请先完成前两项菜单内容!");}

	
}
/////////////////////////////////////////////////////////////////////////////
//绘图

void CFuelEconomyView::Line0(CDC* pDC,double x1,double y1,double x2,double y2,int siw,COLORREF col)
{
	CPen siPen;
	CPen*pO1dPen;
	siPen.CreatePen(PS_SOLID,siw,col);
	pO1dPen=pDC->SelectObject(&siPen);
	pDC->MoveTo(int(HI*x1),int(HI*y1));
	pDC->LineTo(int(HI*x2),int(HI*y2));
    pDC->SelectObject(pO1dPen);
	siPen.DeleteObject();
}

void CFuelEconomyView::FillRect(CDC *pDC, COLORREF col, CPoint point, int chd, int kd)
{
	CBrush newBrush(col);
	CBrush*poldBrush;
	poldBrush=pDC->SelectObject(&newBrush);
	pDC->FillRect(CRect(point.x,point.y,point.x+chd,point.y+kd),&newBrush);
    pDC->SelectObject(poldBrush);
	newBrush.DeleteObject();

}
///////////////////////////////////////////////////////////////////////////////////////
//坐标
void CFuelEconomyView::DengXY(CDC *pDC)//等速工况坐标
{
	int j,ds;
	double x1,y1,dsy;
	char buf[25];
	CString sc;
	pDC->SetBkColor(colb);
	ds=0;x1=0;y1=0;
	wsprintf(buf,"%d",ds);
	pDC->TextOut(-40,-10,buf,strlen(buf));
	Line0(pDC,-10,0,65,0,4,RGB(0,0,0));
	pDC->TextOut(int(HI*68),-38,"Ua(km/h)");
	for (j=0;j<13;j++) {
		x1+=10;ds+=10;
		Line0(pDC,x1/2,0,x1/2,35,1,RGB(0,0,0));//纵线
		wsprintf(buf,"%d",ds);		
		pDC->TextOut(int(HI*x1/2)-20,-10,buf,strlen(buf));
	}
	dsy=20;
	Line0(pDC,0,-20,0,35,4,RGB(0,0,0));
	pDC->TextOut(-170,int(HI*37),"Qs(L/100km)");
	for (j=0;j<14;j++) {
		y1+=5;dsy+=2;
		Line0(pDC,0,y1/2,65,y1/2,1,RGB(0,0,0));//横线
		sc.Format("%3.1f",dsy);
		pDC->TextOut(-140,int(HI*y1/2)+20,sc,strlen(sc));  	
	}    

}


void CFuelEconomyView::LiuXY(CDC *pDC)//六工况坐标
{
	int j,ds;
	double x1,y1,dsy;
	char buf[25];
	CString sc;
	pDC->SetBkColor(colb);
	ds=0;x1=80;y1=10;
	wsprintf(buf,"%d",ds);
	pDC->TextOut(-40,180,buf,strlen(buf));
	Line0(pDC,-10,5,32.5,5,4,RGB(0,0,0));//x轴
	pDC->TextOut(int(HI*34),180,"t(s)");
	for (j=0;j<10;j++) {
		x1+=6.5;ds+=10;
		Line0(pDC,x1/2,5,x1/2,30,1,RGB(0,0,0));//纵线
		wsprintf(buf,"%d",ds);		
		pDC->TextOut(int(HI*x1/2)-20,180,buf,strlen(buf));
	}
	dsy=0;
	Line0(pDC,40,0,40,30,4,RGB(0,0,0));//y轴
	pDC->TextOut(-170,int(HI*32),"Q(ml)");
	for (j=0;j<10;j++) {
		y1+=5;dsy+=60;
		Line0(pDC,0,y1/2,32.5,y1/2,1,RGB(0,0,0));//横线
		sc.Format("%3.1f",dsy);
		pDC->TextOut(-140,int(HI*y1/2)+20,sc,strlen(sc));  	
	}  
	Fontstr(pDC,400,80,"楷体_GB2312",40.0f,"燃油消耗量-时间曲线");
	/////////////////////

	int jo,dso;
	double x1o,y1o,dsyo;
	char bufo[25];
	CString sco;
	pDC->SetBkColor(colb);
	dso=0;x1o=0;y1o=10;
	wsprintf(bufo,"%d",dso);
	pDC->TextOut(1480,180,bufo,strlen(bufo));
	Line0(pDC,35,5,72.5,5,4,RGB(0,0,0));//x轴
	pDC->TextOut(int(HI*75),180,"t(s)");
	for (jo=0;jo<10;jo++) {
		x1o+=6.5;dso+=10;
		Line0(pDC,x1o/2,5,x1o/2,30,1,RGB(0,0,0));//纵线
		wsprintf(bufo,"%d",dso);		
		pDC->TextOut(int(HI*x1o/2)-20,180,bufo,strlen(bufo));
	}
	dsyo=0;
	Line0(pDC,0,0,0,30,4,RGB(0,0,0));//y轴
	pDC->TextOut(1400,int(HI*32),"Qt(mL/s)");
	for (jo=0;jo<10;jo++) {
		y1o+=5;dsyo+=1;
		Line0(pDC,40,y1o/2,72.5,y1o/2,1,RGB(0,0,0));//横线
		sco.Format("%3.1f",dsyo);
		pDC->TextOut(1400,int(HI*y1o/2)+20,sco,strlen(sco));  	
	}    
	Fontstr(pDC,2000,80,"楷体_GB2312",40.0f,"单位燃油消耗-时间曲线");  

}

void CFuelEconomyView::SiXY(CDC *pDC)//四工况坐标
{
	int j,ds;
	double x1,y1,dsy;
	char buf[25];
	CString sc;
	pDC->SetBkColor(colb);
	ds=0;x1=80;y1=10;
	wsprintf(buf,"%d",ds);
	pDC->TextOut(-40,180,buf,strlen(buf));
	Line0(pDC,-10,5,32.5,5,4,RGB(0,0,0));//x轴
	pDC->TextOut(int(HI*34),180,"t(s)");
	for (j=0;j<10;j++) {
		x1+=6.5;ds+=10;
		Line0(pDC,x1/2,5,x1/2,30,1,RGB(0,0,0));//纵线
		wsprintf(buf,"%d",ds);		
		pDC->TextOut(int(HI*x1/2)-20,180,buf,strlen(buf));
	}
	dsy=0;
	Line0(pDC,40,0,40,30,4,RGB(0,0,0));//y轴
	pDC->TextOut(-170,int(HI*32),"Q(ml)");
	for (j=0;j<10;j++) {
		y1+=5;dsy+=35;
		Line0(pDC,0,y1/2,32.5,y1/2,1,RGB(0,0,0));//横线
		sc.Format("%3.1f",dsy);
		pDC->TextOut(-140,int(HI*y1/2)+20,sc,strlen(sc));  	
	}  
	Fontstr(pDC,400,80,"楷体_GB2312",40.0f,"燃油消耗量-时间曲线");
	int jo,dso;
	double x1o,y1o,dsyo;
	char bufo[25];
	CString sco;
	pDC->SetBkColor(colb);
	dso=0;x1o=0;y1o=10;
	wsprintf(bufo,"%d",dso);
	pDC->TextOut(1480,180,bufo,strlen(bufo));
	Line0(pDC,35,5,72.5,5,4,RGB(0,0,0));//x轴
	pDC->TextOut(int(HI*75),180,"t(s)");
	for (jo=0;jo<10;jo++) {
		x1o+=6.5;dso+=10;
		Line0(pDC,x1o/2,5,x1o/2,30,1,RGB(0,0,0));//纵线
		wsprintf(bufo,"%d",dso);		
		pDC->TextOut(int(HI*x1o/2)-20,180,bufo,strlen(bufo));
	}
	dsyo=0;
	Line0(pDC,0,0,0,30,4,RGB(0,0,0));//y轴
	pDC->TextOut(1400,int(HI*32),"Qt(mL/s)");
	for (jo=0;jo<10;jo++) {
		y1o+=5;dsyo+=0.7;
		Line0(pDC,40,y1o/2,72.5,y1o/2,1,RGB(0,0,0));//横线
		sco.Format("%3.1f",dsyo);
		pDC->TextOut(1400,int(HI*y1o/2)+20,sco,strlen(sco));  	
	}
	Fontstr(pDC,2000,80,"楷体_GB2312",40.0f,"单位燃油消耗-时间曲线");    


}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CFuelEconomyView::Fontstr(CDC *pDC, double x, double y, CString font, float nPoi, CString str)
{   CFont fnBig1;
    CFont* poldFont1;
	fnBig1.CreateFont(-int(nPoi),0,0,0,400,FALSE,FALSE,0,GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,font);
	poldFont1=pDC->SelectObject(&fnBig1);
	pDC->TextOut(int(x),int(y),str);
	pDC->SelectObject(poldFont1);

⌨️ 快捷键说明

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