www.pudn.com > PressMonitor_q.zip > PressHistoryView.cpp


// PressHistoryView.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "Monitor.h" 
#include "PressHistoryView.h" 
#include "MonitorDoc.h" 
#include "Hint.h" 
#include "MonitorDataset.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
static COLORREF tmpColor[]= 
{ 
    RGB(0,0,0), RGB(128,0,255),RGB(100,0,100), RGB(190,0,90), 
		RGB(170,255,0),RGB(10,220,10),RGB(0,0,255) 
}; 
///////////////////////////////////////////////////////////////////////////// 
// CPressHistoryView 
 
IMPLEMENT_DYNCREATE(CPressHistoryView, CFormView) 
 
CPressHistoryView::CPressHistoryView() 
	: CFormView(CPressHistoryView::IDD) 
{ 
	//{{AFX_DATA_INIT(CPressHistoryView) 
	//}}AFX_DATA_INIT 
} 
 
CPressHistoryView::~CPressHistoryView() 
{ 
} 
 
void CPressHistoryView::DoDataExchange(CDataExchange* pDX) 
{ 
	CFormView::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CPressHistoryView) 
	DDX_Control(pDX, IDC_RECORD_TIME, m_recordTime); 
	DDX_Control(pDX, IDC_RECORD_OPEN, m_btnRecordOpen); 
	DDX_Control(pDX, IDC_PAGE_START, m_btnPageStart); 
	DDX_Control(pDX, IDC_PAGE_PREV, m_btnPagePrev); 
	DDX_Control(pDX, IDC_PAGE_NEXT, m_btnPageNext); 
	DDX_Control(pDX, IDC_PAGE_END, m_btnPageEnd); 
//	DDX_Control(pDX, IDC_CHECK7, m_btn7); 
	DDX_Control(pDX, IDC_CHECK5, m_btn5); 
	DDX_Control(pDX, IDC_CHECK6, m_btn6); 
	DDX_Control(pDX, IDC_CHECK4, m_btn4); 
	DDX_Control(pDX, IDC_CHECK3, m_btn3); 
	DDX_Control(pDX, IDC_CHECK2, m_btn2); 
	DDX_Control(pDX, IDC_CHECK1, m_btn1); 
	DDX_Control(pDX, IDC_CHECK0, m_btn0); 
	DDX_Control(pDX, IDC_TREND, m_3DTrend); 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CPressHistoryView, CFormView) 
	//{{AFX_MSG_MAP(CPressHistoryView) 
	ON_BN_CLICKED(IDC_CHECK0, OnCheck0) 
	ON_BN_CLICKED(IDC_CHECK1, OnCheck1) 
	ON_BN_CLICKED(IDC_CHECK2, OnCheck2) 
	ON_BN_CLICKED(IDC_CHECK3, OnCheck3) 
	ON_BN_CLICKED(IDC_CHECK4, OnCheck4) 
	ON_BN_CLICKED(IDC_CHECK5, OnCheck5) 
	ON_BN_CLICKED(IDC_CHECK6, OnCheck6) 
	ON_BN_CLICKED(IDC_PAGE_START, OnPageStart) 
	ON_BN_CLICKED(IDC_PAGE_PREV, OnPagePrev) 
	ON_BN_CLICKED(IDC_PAGE_NEXT, OnPageNext) 
	ON_BN_CLICKED(IDC_PAGE_END, OnPageEnd) 
	ON_BN_CLICKED(IDC_RECORD_OPEN, OnRecordOpen) 
	//}}AFX_MSG_MAP 
	ON_UPDATE_COMMAND_UI(IDC_PAGE_START, OnUpdatePageStart) 
	ON_UPDATE_COMMAND_UI(IDC_PAGE_PREV, OnUpdatePagePrev) 
	ON_UPDATE_COMMAND_UI(IDC_PAGE_NEXT, OnUpdatePageNext) 
	ON_UPDATE_COMMAND_UI(IDC_PAGE_END, OnUpdatePageEnd) 
	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() 
 
///////////////////////////////////////////////////////////////////////////// 
// CPressHistoryView diagnostics 
 
#ifdef _DEBUG 
void CPressHistoryView::AssertValid() const 
{ 
	CFormView::AssertValid(); 
} 
 
void CPressHistoryView::Dump(CDumpContext& dc) const 
{ 
	CFormView::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CPressHistoryView message handlers 
 
void CPressHistoryView::OnInitialUpdate()  
{ 
	CFormView::OnInitialUpdate(); 
 
	CMonitorDoc	*pDoc = (CMonitorDoc*) GetDocument(); 
	pDoc->m_bUpdateView=false; 
 
//Added by Me! 
// Iterate all child windows and instruct to update themselves 
	CWnd* pWndChild=GetWindow(GW_CHILD); 
	int iIndex=0; 
	while (NULL!=pWndChild) 
	{ 
 
		CCmdUI state; 
		state.m_nID=::GetWindowLong(*pWndChild, GWL_ID); 
		state.m_nIndex=iIndex++; 
		state.m_pOther=pWndChild; 
 
		// ***CCmdUI::DoUpdate is undocumented MFC*** 
		state.DoUpdate(this, FALSE); 
 
		pWndChild=pWndChild->GetWindow(GW_HWNDNEXT); 
	} 
//////////////////////////////////////////////////////////// 
 
	m_btn0.SetShade(SHS_DIAGSHADE,8,10,5,RGB(255,55,55)); 
	m_btn1.SetShade(SHS_DIAGSHADE,8,10,5,RGB(255,55,55)); 
	m_btn2.SetShade(SHS_DIAGSHADE,8,10,5,RGB(255,55,55)); 
	m_btn3.SetShade(SHS_DIAGSHADE,8,10,5,RGB(255,55,55)); 
	m_btn4.SetShade(SHS_DIAGSHADE,8,10,5,RGB(255,55,55)); 
	m_btn5.SetShade(SHS_DIAGSHADE,8,10,5,RGB(255,55,55)); 
	m_btn6.SetShade(SHS_DIAGSHADE,8,10,5,RGB(255,55,55)); 
//	m_btn7.SetShade(SHS_DIAGSHADE,8,10,5,RGB(255,55,55)); 
 
	m_btn0.SetTextColor(tmpColor[0]); 
	m_btn1.SetTextColor(tmpColor[1]); 
	m_btn2.SetTextColor(tmpColor[2]); 
	m_btn3.SetTextColor(tmpColor[3]); 
	m_btn4.SetTextColor(tmpColor[4]); 
	m_btn5.SetTextColor(tmpColor[5]); 
	m_btn6.SetTextColor(tmpColor[6]); 
//	m_btn7.SetTextColor(tmpColor[7]); 
 
 
	m_btnPageStart.SetShade(SHS_NOISE,66); 
	m_btnPagePrev.SetShade(SHS_NOISE,66); 
	m_btnPageNext.SetShade(SHS_NOISE,66); 
	m_btnPageEnd.SetShade(SHS_NOISE,66); 
	m_btnRecordOpen.SetShade(SHS_NOISE,66); 
 
	m_btnPageStart.SetIcon(IDI_ICON_START,BS_CENTER,IDI_ICON_START); 
	m_btnPagePrev.SetIcon(IDI_ICON_PREV,BS_CENTER,IDI_ICON_PREV); 
	m_btnPageNext.SetIcon(IDI_ICON_NEXT,BS_CENTER,IDI_ICON_NEXT); 
	m_btnPageEnd.SetIcon(IDI_ICON_END,BS_CENTER,IDI_ICON_END); 
	m_btnRecordOpen.SetIcon(IDI_ICON_OPEN,BS_CENTER,IDI_ICON_OPEN); 
 
	m_recordTime.SetBkColor(RGB(0,0,0)); 
	m_recordTime.SetText("当前没有打开历史记录"); 
	m_recordTime.SetTextColor(RGB(255,255,255)); 
	m_recordTime.HCenterText(); 
	m_recordTime.VCenterText(); 
 
	Scale scale[3]; 
	scale[0].MaxiValue=10; 
	scale[0].MiniValue=0; 
	scale[0].nStyle=SCALE_LEFT; 
	scale[0].strUnit=CURVE_UNIT_V; 
	scale[0].clr=RGB(255,0,0); 
 
	scale[1].MaxiValue=1000; 
	scale[1].MiniValue=0; 
	scale[1].nStyle=SCALE_CENTER; 
	scale[1].strUnit=CURVE_UNIT_MM; 
	scale[1].clr=RGB(128,0,64); 
 
	scale[2].MaxiValue=32; 
	scale[2].MiniValue=0; 
	scale[2].nStyle=SCALE_RIGHT; 
	scale[2].strUnit=CURVE_UNIT_MPA; 
	scale[2].clr=RGB(128,0,255); 
 
	CTime time; 
	time=time.GetCurrentTime(); 
//显示控件 
	if(!m_3DTrend.Initialize(scale)) 
        return ; 
	m_3DTrend.AddCurve("主系统压力",tmpColor[0],CURVE_UNIT_MPA,2); 
	m_3DTrend.AddCurve("回程缸压力",tmpColor[1],CURVE_UNIT_MPA,2); 
	m_3DTrend.AddCurve("主缸压力",tmpColor[2],CURVE_UNIT_MPA,2); 
	m_3DTrend.AddCurve("压机位移",tmpColor[3],CURVE_UNIT_MM,2); 
	m_3DTrend.AddCurve("V2",tmpColor[4],CURVE_UNIT_V,1,true); 
	m_3DTrend.AddCurve("V3",tmpColor[5],CURVE_UNIT_V,1,true); 
	m_3DTrend.AddCurve("XV1",tmpColor[6],CURVE_UNIT_V,1,true); 
//	m_3DTrend.AddCurve("A_YA6",tmpColor[7],CURVE_UNIT_V,1,true); 
	 
	for(int i=0;im_bRecordOpen) 
		return; 
 
	m_recordTime.SetText(pDoc->m_strRecordTime); 
 
 
	for(f=0;f<=m_3DTrend.m_nCurveDataCount;f++) 
	{ 
		pDataset=&pDoc->m_DatasetSave[SYS_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(0)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[RETURNCYLINDER_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(1)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[MAINCYLINDER_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(2)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[FORGING_POS_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(3)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
//		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA1_DATASET]; 
//		m_3DTrend.m_curveArray.GetAt(4)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA2_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(5)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA3_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(6)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
//		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA6_DATASET]; 
//		m_3DTrend.m_curveArray.GetAt(7)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
	} 
	 
	m_3DTrend.RefreshWindow();	 
} 
 
void CPressHistoryView::OnPagePrev()  
{ 
	int f; 
	m_nPageNum--; 
	if(m_nPageNum<0) 
	{ 
		m_nPageNum=0; 
		return; 
	} 
	int nSkipNum=m_nPageNum*m_3DTrend.m_nCurveDataCount; 
	CMonitorDoc* pDoc=(CMonitorDoc*)GetDocument(); 
	CMonitorDataset* pDataset; 
 
	for(f=0;f<=m_3DTrend.m_nCurveDataCount;f++) 
	{ 
		pDataset=&pDoc->m_DatasetSave[SYS_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(0)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[RETURNCYLINDER_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(1)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[MAINCYLINDER_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(2)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[FORGING_POS_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(3)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
//		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA1_DATASET]; 
//		m_3DTrend.m_curveArray.GetAt(4)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA2_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(5)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA3_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(6)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
	} 
	 
	m_3DTrend.RefreshWindow();	 
	 
} 
 
void CPressHistoryView::OnPageNext()  
{ 
	int f; 
	m_nPageNum++; 
	if(m_nPageNum>=m_nPageTotalNum) 
	{ 
		m_nPageNum=m_nPageTotalNum-1; 
		return; 
	} 
	int nSkipNum=m_nPageNum*m_3DTrend.m_nCurveDataCount; 
	CMonitorDoc* pDoc=(CMonitorDoc*)GetDocument(); 
	CMonitorDataset* pDataset; 
 
	for(f=0;f<=m_3DTrend.m_nCurveDataCount;f++) 
	{ 
		pDataset=&pDoc->m_DatasetSave[SYS_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(0)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[RETURNCYLINDER_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(1)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[MAINCYLINDER_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(2)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[FORGING_POS_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(3)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
//		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA1_DATASET]; 
//		m_3DTrend.m_curveArray.GetAt(4)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA2_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(5)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA3_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(6)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
	} 
	 
	m_3DTrend.RefreshWindow();		 
} 
 
void CPressHistoryView::OnPageEnd()  
{ 
	int f; 
	m_nPageNum=m_nPageTotalNum-1; 
	int nSkipNum=m_nPageNum*m_3DTrend.m_nCurveDataCount; 
	CMonitorDoc* pDoc=(CMonitorDoc*)GetDocument(); 
	CMonitorDataset* pDataset; 
 
	for(f=0;f<=m_3DTrend.m_nCurveDataCount;f++) 
	{ 
		pDataset=&pDoc->m_DatasetSave[SYS_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(0)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[RETURNCYLINDER_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(1)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[MAINCYLINDER_PRE_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(2)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[FORGING_POS_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(3)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
//		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA1_DATASET]; 
//		m_3DTrend.m_curveArray.GetAt(4)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA2_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(5)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA3_DATASET]; 
		m_3DTrend.m_curveArray.GetAt(6)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
 
	} 
	 
	m_3DTrend.RefreshWindow();	 
} 
 
void CPressHistoryView::OnRecordOpen()  
{ 
	CMonitorDoc* pDoc=(CMonitorDoc*)GetDocument(); 
	CDocTemplate* pTemplate = pDoc->GetDocTemplate(); 
	ASSERT(pTemplate != NULL); 
 
	CString newName; 
	if(!AfxGetApp()->DoPromptFileName(newName,AFX_IDS_OPENFILE,OFN_HIDEREADONLY| 
		OFN_FILEMUSTEXIST,TRUE,pTemplate)) 
		return; 
	if(!pDoc->OnOpenDocument(newName)) 
		return ; 
 
	CString strTime; 
	CTime timeBegin,timeEnd; 
	timeBegin=pDoc->m_DatasetSave[SYS_PRE_DATASET].GetTime(0); 
	timeEnd=pDoc->m_DatasetSave[SYS_PRE_DATASET].GetTime(pDoc->m_DatasetSave[SYS_PRE_DATASET].GetDataArraySize()-1); 
 
	strTime.Format("%d年%d月%d日%d时:(%d分%d秒~%d分%d秒)", 
		timeBegin.GetYear(),timeBegin.GetMonth(), 
		timeBegin.GetDay(),timeBegin.GetHour(), 
		timeBegin.GetMinute(),timeBegin.GetSecond(), 
		timeEnd.GetMinute(),timeEnd.GetSecond()); 
 
	pDoc->m_strRecordTime=strTime; 
	pDoc->m_bRecordOpen=TRUE; 
 
	UpdateData(FALSE); 
	OnPageStart(); 
	InitialTrendPrint(); 
	return ;	 
} 
 
void CPressHistoryView::OnUpdatePageStart(CCmdUI* pCmdUI) 
{ 
	pCmdUI->Enable(m_nPageNum!=0); 
} 
 
void CPressHistoryView::OnUpdatePagePrev(CCmdUI* pCmdUI) 
{ 
	pCmdUI->Enable(m_nPageNum>0); 
} 
 
void CPressHistoryView::OnUpdatePageNext(CCmdUI* pCmdUI) 
{ 
	pCmdUI->Enable(m_nPageNumEnable(m_nPageNum!=m_nPageTotalNum-1); 
} 
 
 
BOOL CPressHistoryView::PreTranslateMessage(MSG* pMsg)  
{ 
//Added by Me! 
	// Iterate all child windows and instruct to update themselves 
	CWnd* pWndChild=GetWindow(GW_CHILD); 
	int iIndex=0; 
	while (NULL!=pWndChild) 
	{ 
 
		CCmdUI state; 
		state.m_nID=::GetWindowLong(*pWndChild, GWL_ID); 
		state.m_nIndex=iIndex++; 
		state.m_pOther=pWndChild; 
 
		// ***CCmdUI::DoUpdate is undocumented MFC*** 
		state.DoUpdate(this, FALSE); 
 
		pWndChild=pWndChild->GetWindow(GW_HWNDNEXT); 
	} 
//////////////////////////////////////////////////////////// 
	 
	return CFormView::PreTranslateMessage(pMsg); 
} 
 
//打印及打印预览 
BOOL CPressHistoryView::OnPreparePrinting(CPrintInfo* pInfo)  
{ 
	// TODO: call DoPreparePrinting to invoke the Print dialog box 
	pInfo->SetMaxPage(5); 
	return DoPreparePrinting(pInfo); 
} 
 
void CPressHistoryView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)  
{ 
	// TODO: Add your specialized code here and/or call the base class 
	 
} 
 
void CPressHistoryView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)  
{ 
	// TODO: Add your specialized code here and/or call the base class 
} 
void CPressHistoryView::OnPrintPage(int pageNum) 
{ 
	int f; 
	 
	int nSkipNum=(pageNum-1)*m_3DTrendPrint.m_nCurveDataCount; 
	CMonitorDoc* pDoc=(CMonitorDoc*)GetDocument(); 
	CMonitorDataset* pDataset; 
	 
	for(f=0;f<=m_3DTrend.m_nCurveDataCount;f++) 
	{ 
		pDataset=&pDoc->m_DatasetSave[SYS_PRE_DATASET]; 
		m_3DTrendPrint .m_curveArray.GetAt(0)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
		 
		pDataset=&pDoc->m_DatasetSave[RETURNCYLINDER_PRE_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(1)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
		 
		pDataset=&pDoc->m_DatasetSave[MAINCYLINDER_PRE_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(2)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
		 
		pDataset=&pDoc->m_DatasetSave[FORGING_POS_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(3)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
		 
		//		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA1_DATASET]; 
		//		m_3DTrend.m_curveArray.GetAt(4)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
		 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA2_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(5)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
		 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA3_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(6)->SetData(f,pDataset->GetData(f+nSkipNum),pDataset->GetTime(f+nSkipNum)); 
		 
	} 
} 
void CPressHistoryView::OnPrint(CDC* pDC, CPrintInfo* pInfo)  
{ 
	// TODO: Add your specialized code here and/or call the base class 
	CMonitorDoc* pDoc=(CMonitorDoc*)GetDocument(); 
 
 
	m_rectPrint=pInfo->m_rectDraw; 
 
	OnPrintPage(pInfo->m_nCurPage); 
 
	m_nHeadFontHigh=m_rectPrint.Height()/25; 
	if (m_nHeadFontHigh>100) { 
		m_nHeadFontHigh=100; 
	} 
	else if (m_nHeadFontHigh<40) { 
		m_nHeadFontHigh=40; 
	} 
	m_nFootFontHigh=m_rectPrint.Height()/30;// 
	if (m_nFootFontHigh>70) { 
		m_nFootFontHigh=70; 
	} 
	else if (m_nHeadFontHigh<35) { 
		m_nFootFontHigh=35; 
	} 
	 
	m_rectTitle.left=m_rectPrint.left; 
	m_rectTitle.right=m_rectPrint.right; 
	m_rectTitle.top=m_rectPrint.top; 
	m_rectTitle.bottom=m_rectPrint.top+m_nHeadFontHigh+20;// m_rectPrint.Height()/25; 
	 
	//if(m_rectPrint.Width()>m_rectPrint.Height()){ 
	//		m_rectChart.left=m_rectPrint.left+m_rectPrint.Width()/20; 
	//		m_rectChart.right=m_rectPrint.right-m_rectPrint.Width()/20; 
	//		m_rectChart.top=m_rectTitle.bottom+m_rectPrint.Height()/20; 
	//		m_rectChart.bottom=m_rectFooter.top-m_rectPrint.Height()/20; 
	//	} 
	 
	//else 
	{ 
		m_rectChart.left=m_rectPrint.left; 
		m_rectChart.right=m_rectPrint.right; 
		m_rectChart.top=m_rectTitle.bottom+20;//m_rectPrint.Height()/15; 
		int charBottom=m_rectChart.top+(int)((m_rectChart.right-m_rectChart.left)*0.70); 
		if (charBottom>=m_rectPrint.bottom-m_nFootFontHigh-16-10 ) { 
			m_rectChart.bottom=m_rectPrint.bottom-m_nFootFontHigh-16-10 -2; 
		} 
		else 
			m_rectChart.bottom=charBottom;//m_rectFooter.top-m_rectPrint.Height()/4; 
	} 
	 
	m_rectFooter.left=m_rectPrint.left; 
	m_rectFooter.right=m_rectPrint.right; 
	m_rectFooter.top=m_rectChart.bottom+10; 
	int footerBottom=m_rectChart.bottom+10+m_nFootFontHigh+16; 
	if (footerBottom>m_rectPrint.bottom) { 
		footerBottom=m_rectPrint.bottom; 
	} 
	m_rectFooter.bottom=footerBottom; 
	 
	 
	pDC->Rectangle(m_rectPrint); 
	pDC->Rectangle(m_rectTitle); 
	pDC->Rectangle(m_rectFooter); 
	 
	PrintPageHeader(pDC); 
	m_3DTrendPrint.OnPrint(pDC,m_rectChart); 
	//m_3DTrend.OnPrint(pDC,m_rectChart); 
	PrintPageFooter(pDC,pInfo->m_nCurPage); 
} 
 
 
 
void CPressHistoryView::PrintPageHeader(CDC *pDC) 
{ 
	CFont fontTitle; 
	fontTitle.CreateFont(m_nHeadFontHigh,0,0,0,400,FALSE,FALSE, 
		0,ANSI_CHARSET,OUT_DEFAULT_PRECIS, 
		CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, 
		DEFAULT_PITCH|FF_MODERN,"Arial");//"楷体_GB2312" 
 
	CFont* pOldFont=(CFont*)pDC->SelectObject(&fontTitle); 
	pDC->SetTextColor(GetSysColor(COLOR_WINDOWTEXT)); 
 
	pDC->DrawText("压机历史曲线图",m_rectTitle,DT_CENTER|DT_VCENTER|DT_SINGLELINE) ; 
 
	pDC->SelectObject(pOldFont); 
} 
 
void CPressHistoryView::PrintPageFooter(CDC *pDC,int currentPage) 
{ 
	CFont fontFooter; 
	CRect rectTemp; 
	CString strTime; 
	CMonitorDoc* pDoc=(CMonitorDoc*)GetDocument(); 
	 
	fontFooter.CreateFont(m_nFootFontHigh,0,0,0,400,FALSE,FALSE, 
		0,ANSI_CHARSET,OUT_DEFAULT_PRECIS, 
		CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, 
		DEFAULT_PITCH|FF_MODERN,"宋体"); 
	CFont* pOldFont=(CFont*)pDC->SelectObject(&fontFooter); 
	pDC->SetTextColor(GetSysColor(COLOR_WINDOWTEXT)); 
	 
	CTime timeBegin,timeEnd; 
	timeBegin=pDoc->m_DatasetSave[SYS_PRE_DATASET].GetTime(0); 
	timeEnd=pDoc->m_DatasetSave[SYS_PRE_DATASET].GetTime(pDoc->m_DatasetSave[SYS_PRE_DATASET].GetDataArraySize()-1); 
	 
	strTime.Format("%d年%d月%d日%d时:(%d分%d秒~%d分%d秒) 第%d页", 
		timeBegin.GetYear(),timeBegin.GetMonth(), 
		timeBegin.GetDay(),timeBegin.GetHour(), 
		timeBegin.GetMinute(),timeBegin.GetSecond(), 
		timeEnd.GetMinute(),timeEnd.GetSecond(), 
		currentPage 
		); 
	 
	rectTemp=m_rectFooter; 
	rectTemp.right=m_rectFooter.right-100; 
	pDC->DrawText(strTime,rectTemp,DT_RIGHT|DT_VCENTER|DT_SINGLELINE) ; 
	pDC->SelectObject(pOldFont); 
} 
 
void CPressHistoryView::InitialTrendPrint() 
{ 
	int f; 
	CMonitorDoc* pDoc=(CMonitorDoc*)GetDocument(); 
	CMonitorDataset* pDataset; 
 
	if(!pDoc->m_bRecordOpen) 
		return; 
 
	for(f=0;f<=m_3DTrendPrint.m_nCurveDataCount;f++) 
	{ 
		pDataset=&pDoc->m_DatasetSave[SYS_PRE_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(0)->SetData(f,pDataset->GetData(f),pDataset->GetTime(f)); 
 
		pDataset=&pDoc->m_DatasetSave[RETURNCYLINDER_PRE_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(1)->SetData(f,pDataset->GetData(f),pDataset->GetTime(f)); 
 
		pDataset=&pDoc->m_DatasetSave[MAINCYLINDER_PRE_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(2)->SetData(f,pDataset->GetData(f),pDataset->GetTime(f)); 
 
		pDataset=&pDoc->m_DatasetSave[FORGING_POS_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(3)->SetData(f,pDataset->GetData(f),pDataset->GetTime(f)); 
 
//		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA1_DATASET]; 
//		m_3DTrendPrint.m_curveArray.GetAt(4)->SetData(f,pDataset->GetData(f),pDataset->GetTime(f)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA2_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(5)->SetData(f,pDataset->GetData(f),pDataset->GetTime(f)); 
 
		pDataset=&pDoc->m_DatasetSave[AOUT_A_YA3_DATASET]; 
		m_3DTrendPrint.m_curveArray.GetAt(6)->SetData(f,pDataset->GetData(f),pDataset->GetTime(f)); 
 
	//	pDataset=&pDoc->m_DatasetSave[AOUT_A_YA6_DATASET]; 
	//	m_3DTrendPrint.m_curveArray.GetAt(7)->SetData(f,pDataset->GetData(f),pDataset->GetTime(f)); 
	} 
	 
}