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

📄 m_esystemview.cpp

📁 燕山大学监考系统
💻 CPP
字号:
// M_ESystemView.cpp : implementation of the CM_ESystemView class
//

#include "stdafx.h"
#include "M_ESystem.h"

#include "M_ESystemDoc.h"
#include "M_ESystemView.h"
#include "BaseInfoDlg.h"
#include "MTeatherDlg.h"
#include "SkinPlusPlus.h"
#include "M_Teacher.h"

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

/////////////////////////////////////////////////////////////////////////////
// CM_ESystemView

IMPLEMENT_DYNCREATE(CM_ESystemView, CScrollView)

BEGIN_MESSAGE_MAP(CM_ESystemView, CScrollView)
	//{{AFX_MSG_MAP(CM_ESystemView)
	ON_COMMAND(ID_BASE_INFO, OnBaseInfo)
	ON_COMMAND(ID_M_TEACHER, OnMTeacher)
	ON_COMMAND(ID_PRINT_END, OnPrintEnd)
	ON_COMMAND(ID_M_TEA, OnMTea)
	ON_COMMAND(ID_Show, OnShow)
	ON_UPDATE_COMMAND_UI(ID_M_TEA, OnUpdateMTea)
	ON_UPDATE_COMMAND_UI(ID_Show, OnUpdateShow)
	ON_UPDATE_COMMAND_UI(ID_M_TEACHER, OnUpdateMTeacher)
	ON_UPDATE_COMMAND_UI(ID_PRINT_END, OnUpdatePrintEnd)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CM_ESystemView construction/destruction

CM_ESystemView::CM_ESystemView()
{
	// TODO: add construction code here
	this->count=0;

}

CM_ESystemView::~CM_ESystemView()
{
}

BOOL CM_ESystemView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
		LoadSkin(_T("Topax.ssk"));

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CM_ESystemView drawing

void CM_ESystemView::OnDraw(CDC* pDC)
{  
	CM_ESystemDoc* pDoc = GetDocument();

/*   if(count==0)
	{ 
	    CFont font; 
        font.CreateFont(-700,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Time New Roman");
	    CFont* pOldFont = (CFont*)pDC->SelectObject(&font);
		CPoint point(0,0);
	    point += CSize(3700,-1000);
	    pDC->TextOut(point.x,point.y,pDoc->m_string[0]);
		pDC->SelectObject(pOldFont);
		CFont font1;
		font1.CreateFont(-300,0,0,0,400,TRUE,TRUE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Time New Roman");
	   CFont* pOldFont1 = (CFont*)pDC->SelectObject(&font1);
	
	    point += CSize(6000,-5000);
	    pDC->TextOut(point.x,point.y,pDoc->m_s);
		pDC->SelectObject(pOldFont1);

	}
	else
	{
	int m,n;
	CString str;
	CFont font; 
    font.CreateFont(-300,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Time New Roman");
	CFont* pOldFont = (CFont*)pDC->SelectObject(&font);
	
	m=pDoc->count2/pDoc->count1;
    n=pDoc->count2%pDoc->count1;

	
    CPoint point(0,0);
	point += CSize(720,-720);
	pDC->TextOut(point.x,point.y,"考试科目:");
	point += CSize(1500,0);
    pDC->TextOut(point.x,point.y,pDoc->m_Subject);
	point += CSize(1500,0);
	pDC->TextOut(point.x,point.y,"考试时间:");
	point += CSize(1500,0);
	pDC->TextOut(point.x,point.y,pDoc->m_Time);
	point +=CSize(-4500,-600);
    for (int i=0;i<pDoc->count1;i++)
	{
       
	   pDC->TextOut(point.x,point.y,"---------------------------------------------------");
       point += CSize(0,-600);
	   pDC->TextOut(point.x,point.y,"考试地点:");
	   point += CSize(1500,0);
       pDC->TextOut(point.x,point.y,pDoc->m_Adress[i]);
       point += CSize(1500,0);
       pDC->TextOut(point.x,point.y,"主考老师:");
	   point += CSize(1500,0);
	   pDC->TextOut(point.x,point.y,pDoc->m_zTeacher[i]);
	   point += CSize(-4500,-1000);
	   pDC->TextOut(point.x,point.y,"监考老师:");
	   point += CSize(1500,-500);

   if (n==0)
	   {
		  
		   for(int j=i*m;j<i*m+m;j++)
		   {
			   //
			   pDC->TextOut(point.x,point.y,pDoc->m_mTeacher[j]);
               point+=CSize(0,-400);
		   }

       }
	   else
	   {
		   if (i==pDoc->count1-1)
		   {
			   for(int j=i*m;j<i*m+n;j++)
			   {
				   
			       pDC->TextOut(point.x,point.y,pDoc->m_mTeacher[j]);
				   point +=CSize(0,-400);
			   }
		   }
		   else
		   {
			  for(int j=i*m;j<i*m+m;j++)
			   {
			       
			       pDC->TextOut(point.x,point.y,pDoc->m_mTeacher[j]);
				   point +=CSize(0,-400);

			   }
		   }
		  

	   }
	   point += CSize(-1500,-500);
	}  
	pDC->SelectObject(pOldFont);
	   
	   }*/
 
   

	
}

void CM_ESystemView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();

//	CSize sizeTotal;
	// TODO: calculate the total size of this view
//	sizeTotal.cx = sizeTotal.cy = 100;
//	SetScrollSizes(MM_TEXT, sizeTotal);
/*	CSize sizeTotal(m_rectPrint.Width(),-m_rectPrint.Height());
	CSize sizePage(sizeTotal.cx/2,sizeTotal.cy/2);
	CSize sizeLine(sizeTotal.cx/100,sizeTotal.cy/100);

  
	SetScrollSizes(MM_TWIPS,sizeTotal,sizePage,sizeLine);*/
	
    CSize sizeTotal;
    sizeTotal.cx=100;
	sizeTotal.cy=100;
    SetScrollSizes(MM_TEXT,sizeTotal);

}

/////////////////////////////////////////////////////////////////////////////
// CM_ESystemView printing

BOOL CM_ESystemView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	pInfo->SetMaxPage(5);
	return DoPreparePrinting(pInfo);
}

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

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

/////////////////////////////////////////////////////////////////////////////
// CM_ESystemView diagnostics

#ifdef _DEBUG
void CM_ESystemView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CM_ESystemView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CM_ESystemView message handlers

void CM_ESystemView::OnBaseInfo() 
{
	// TODO: Add your command handler code here
	CBaseInfoDlg dlg;
	dlg.DoModal();
	
}

void CM_ESystemView::OnMTeacher() 
{
	// TODO: Add your command handler code here
	CMTeatherDlg dlg1;
	dlg1.DoModal();
	
}

void CM_ESystemView::OnPrintEnd() 
{
	// TODO: Add your command handler code here
	CM_ESystemDoc* pDoc = GetDocument();
	pDoc->m_info.Empty();
	pDoc->m_Teacher.Empty();
	pDoc->m_Subject.Empty();
	pDoc->m_temp.Empty();
	pDoc->m_M_Teacher.Empty();
	pDoc->m_Time.Empty();
	for (int i=0;i<10;i++) 
	{
	pDoc->m_Adress[i].Empty();
	}
	for (int j=0;j<10;j++) 
	{
	pDoc->m_mTeacher[i].Empty();
	}
	for (int k=0;k<10;k++) 
	{
	pDoc->m_zTeacher[i].Empty();
	}
	count=0;
	pDoc->UpdateAllViews(NULL);
	
}

void CM_ESystemView::OnMTea() 
{
	// TODO: Add your command handler code here
	CM_Teacher dlg2;
	dlg2.DoModal();
	
}

void CM_ESystemView::OnPrint(CDC* pDC, CPrintInfo* pInfo) 
{

	// TODO: Add your specialized code here and/or call the base class
	int nHeight;
	static int i=0;
	static int j=0;
	static int k=0;
	CFont font;
	TEXTMETRIC tm;
	
	pDC->SetMapMode(MM_TWIPS);
	CM_ESystemDoc* pDoc=GetDocument();
	m_nPage = pInfo->m_nCurPage;
	font.CreateFont(-400,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Time New Roman");
	CFont* pOldFont = (CFont*)pDC->SelectObject(&font);
	pDC->GetTextMetrics(&tm);
	nHeight = tm.tmHeight + tm.tmExternalLeading;
	int m = pDoc->count2/pDoc->count1;
	int n = pDoc->count2%pDoc->count1;
	if(i<pDoc->count1&&j<pDoc->count2)
	if ( (m_nPage-1)%(m+1)==0) 
	{
        pDoc->m_temp.Empty();
		pDoc->m_temp+=pDoc->m_zTeacher[i];
//	   MessageBox(pDoc->m_zTeacher[i]);
        pDoc->m_temp+="老师:\n";
		pDoc->m_info.Empty();
		pDoc->m_info+="你好,请于";
		pDoc->m_info+=pDoc->m_Time;
		pDoc->m_info+=",在";
		pDoc->m_info+=pDoc->m_Adress[i];
	//	MessageBox(pDoc->m_Adress[i]);
		pDoc->m_info+="主考";
		pDoc->m_info+=pDoc->m_Subject;
		pDoc->m_info+=",谢谢合作\n";
		pDoc->m_End = "教务处";
		pDC->TextOut(1000,-0*nHeight-720,pDoc->m_temp);
		pDC->TextOut(1000,-1*nHeight-720,pDoc->m_info);
		pDC->TextOut(1000,-2*nHeight-720,pDoc->m_End);
		i++;	
	}
	else
	{ 
		pDoc->m_temp1.Empty();
        pDoc->m_temp1+=pDoc->m_mTeacher[j];
		pDoc->m_temp1+="老师:\n";
        pDoc->m_info.Empty();
		pDoc->m_info+="你好,请于";
		pDoc->m_info+=pDoc->m_Time;
		pDoc->m_info+=",在";
		pDoc->m_info+=pDoc->m_Adress[i-1];
		pDoc->m_info+="监考由";
		pDoc->m_temp.Empty();
		pDoc->m_temp=pDoc->m_zTeacher[i-1];
		pDoc->m_info+=pDoc->m_temp;
		pDoc->m_info+="老师任主考的";
		pDoc->m_info+=pDoc->m_Subject;
		pDoc->m_info+=",谢谢合作\n";
	    pDC->TextOut(1000,-0*nHeight-720,pDoc->m_temp1);
		pDC->TextOut(1000,-1*nHeight-720,pDoc->m_info);
		pDC->TextOut(1000,-2*nHeight-720,pDoc->m_End);
		j++;	
	}
	else
	{
		pDC->TextOut(1000,-720,"预览结束");
	}
	pDC->SelectObject(pOldFont);
	CScrollView::OnPrint(pDC, pInfo);
		
}
void CM_ESystemView::PrintPageHeader(CDC* pDC)
{
	CString str;
	CPoint point(0,0);
	pDC->TextOut(point.x,point.y,"燕山大学");
	point += CSize(720,-720);
	str.Format("%10.10s %10.10s %10.10s %10.10s %10.10s","考试科目","考试时间","考试地点","主考老师","监考老师");
    pDC->TextOut(point.x,point.y,str);
}



void CM_ESystemView::OnShow() 
{
	// TODO: Add your command handler code here

		count++;
		GetDocument()->UpdateAllViews(NULL);

}

void CM_ESystemView::OnUpdateMTea(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(!(GetDocument()->m_Subject.IsEmpty()||GetDocument()->m_Time.IsEmpty()));
	
}

void CM_ESystemView::OnUpdateShow(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(!GetDocument()->m_mTeacher[0].IsEmpty());
	
}

void CM_ESystemView::OnUpdateMTeacher(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(!(GetDocument()->m_zTeacher[0].IsEmpty()||GetDocument()->m_Adress[0].IsEmpty()));
	
}

void CM_ESystemView::OnUpdatePrintEnd(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(count==0)
	{
	    pCmdUI->Enable(FALSE);
	}
	else
	{
		pCmdUI->Enable(TRUE);
	}
}

void CM_ESystemView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	//MessageBox("dsfsdf");
	// TODO: Add your message handler code here
    CM_ESystemDoc* pDoc=GetDocument();
	//dc.SetMapMode(MM_TWIPS);
	
  if(count==0)
	{ 
	    CFont font; 
        font.CreateFont(-35,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Time New Roman");
	    CFont* pOldFont = (CFont*)dc.SelectObject(&font);
		CPoint point(0,0);
	    point += CSize(200,40);
	    dc.TextOut(point.x,point.y,pDoc->m_string[0]);
		dc.SelectObject(pOldFont);
		CFont font1;
		font1.CreateFont(-20,0,0,0,400,TRUE,TRUE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Time New Roman");
	   CFont* pOldFont1 = (CFont*)dc.SelectObject(&font1);
	
	    point += CSize(300,270);
	    dc.TextOut(point.x,point.y,pDoc->m_s);
		dc.SelectObject(pOldFont1);

	}
	else
	{
	int m,n;
	CString str;
	CFont font; 
    font.CreateFont(-20,0,0,0,400,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Time New Roman");
	CFont* pOldFont = (CFont*)dc.SelectObject(&font);
	
	m=pDoc->count2/pDoc->count1;
    n=pDoc->count2%pDoc->count1;
	

	
    CPoint point(0,0);
	point += CSize(30,30);
	dc.TextOut(point.x,point.y,"考试科目:");
	point += CSize(100,0);
    dc.TextOut(point.x,point.y,pDoc->m_Subject);
	point += CSize(100,0);
	dc.TextOut(point.x,point.y,"考试时间:");
	point += CSize(100,0);
	dc.TextOut(point.x,point.y,pDoc->m_Time);
	point +=CSize(-300,30);
    for (int i=0;i<pDoc->count1;i++)
	{
       
	  dc.TextOut(point.x,point.y,"---------------------------------------------------");
       point += CSize(0,30);
	  dc.TextOut(point.x,point.y,"考试地点:");
	   point += CSize(100,0);
       dc.TextOut(point.x,point.y,pDoc->m_Adress[i]);
       point += CSize(100,0);
       dc.TextOut(point.x,point.y,"主考老师:");
	   point += CSize(100,0);
	   dc.TextOut(point.x,point.y,pDoc->m_zTeacher[i]);
	   point += CSize(-300,40);
	   dc.TextOut(point.x,point.y,"监考老师:");
	   point += CSize(100,25);
	  
    if (n==0)
	   {
		  
		   for(int j=i*m;j<i*m+m;j++)
		   {
			   //
			   dc.TextOut(point.x,point.y,pDoc->m_mTeacher[j]);
               point+=CSize(0,20);
		   }

       }
	   else
	   {
		   if (i==pDoc->count1-1)
		   {
			   for(int j=i*m;j<i*m+n;j++)
			   {
				   
			      dc.TextOut(point.x,point.y,pDoc->m_mTeacher[j]);
				   point +=CSize(0,20);
			   }
		   }
		   else
		   {
			  for(int j=i*m;j<i*m+m;j++)
			   {
			       
			       dc.TextOut(point.x,point.y,pDoc->m_mTeacher[j]);
				   point +=CSize(0,20);

			   }
		   }
		  

	   }
	   point += CSize(-100,20);
	}  
	dc.SelectObject(pOldFont);
	   
	   }
	 
	
	// Do not call CScrollView::OnPaint() for painting messages
}

⌨️ 快捷键说明

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