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

📄 reportview.cpp

📁 Visual_C++.NET实用编程百例
💻 CPP
字号:
// reportView.cpp : CreportView 类的实现
//

#include "stdafx.h"
#include "report.h"

#include "reportDoc.h"
#include "reportView.h"
#include ".\reportview.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CreportView

IMPLEMENT_DYNCREATE(CreportView, CScrollView)

BEGIN_MESSAGE_MAP(CreportView, CScrollView)
	// 标准打印命令
	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()

// CreportView 构造/析构

CreportView::CreportView()
{
	// TODO: 在此处添加构造代码

}

CreportView::~CreportView()
{
}

BOOL CreportView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
	// 样式

	return CScrollView::PreCreateWindow(cs);
}

// CreportView 绘制

void CreportView::OnDraw(CDC* pDC)
{
	CreportDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;
	OutReport(pDC);

	// TODO: 在此处为本机数据添加绘制代码
}

void CreportView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();
	CSize sizeTotal;
	// TODO: 计算此视图的合计大小
	sizeTotal.cx = sizeTotal.cy = 500;
	SetScrollSizes(MM_LOENGLISH, sizeTotal);
	CreportDoc* pDoc=GetDocument();
	ASSERT_VALID(pDoc);
	pDoc->SetTitle ("学生成绩单");
	m_pSet=&pDoc->m_set;
	m_pSet->Open();
}


// CreportView 打印

BOOL CreportView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// 默认准备
	return DoPreparePrinting(pInfo);
}

void CreportView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 打印前添加额外的初始化
}

void CreportView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: 打印后添加清除过程
}


// CreportView 诊断

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

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

CreportDoc* CreportView::GetDocument() const // 非调试版本是内联的
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CreportDoc)));
	return (CreportDoc*)m_pDocument;
}
#endif //_DEBUG


// CreportView 消息处理程序

void CreportView::OutReport(CDC* pDC, CPrintInfo* pInfo)
{
	CString strLine;
	TEXTMETRIC metrics;
	int y=0;
	CFont tFont;    //标题字体
	CFont hFont;	//报表头字体
	CFont cFont;	//内容字体
	CFont fFont;	//页脚字体
	//制表位停在1英寸处
	int nTabStops = 100;
	int nFootTabStops = 100;
	if(!pInfo||pInfo->m_nCurPage ==1)
		m_pSet->Requery ();
	tFont.CreateFont (40,0,0,0,FW_BOLD,FALSE,FALSE,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"宋体");
	hFont.CreateFont (32,0,0,0,FW_BOLD,FALSE,TRUE,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"宋体");
	cFont.CreateFont (18,0,0,0,FW_NORMAL,FALSE,FALSE,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"宋体");
	fFont.CreateFont (12,0,0,0,FW_NORMAL,FALSE,FALSE,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"宋体");
	CFont* pOld= (CFont*)pDC->SelectObject (&tFont);
	pDC->GetTextMetrics (&metrics);
	int lHeight=metrics.tmHeight + metrics.tmExternalLeading ;
	y-=lHeight;
	pDC->TextOut (120,0,"学生成绩单");
	pDC->SelectObject (&hFont);
	strLine.Format ("%s\t%s\t%s\t%s\t%s","学号","姓名","文学","数学","总分");
	pDC->TabbedTextOut (0,y,strLine,1,&nTabStops,0);
	if(m_pSet->IsBOF ())
		return;
	lHeight=metrics.tmHeight + metrics.tmExternalLeading ;
	y-=lHeight;
	pDC->SelectObject (&cFont);
	pDC->GetTextMetrics (&metrics);
	lHeight=metrics.tmHeight + metrics.tmExternalLeading ;
	while(!m_pSet->IsEOF ())
	{
		if(pInfo&&abs(y)>1000)
		{
			pInfo->SetMaxPage (pInfo->m_nCurPage +1);
			break;
		}
		strLine.Format ("%d\t%s\t%5.2f\t%5.2f\t%5.2f",m_pSet->m_NO ,m_pSet->m_Name ,m_pSet->m_Literary ,m_pSet->m_Math ,m_pSet->m_Total );
		pDC->TabbedTextOut (0,y,strLine,1,&nTabStops,0);
		y-=lHeight;
		m_pSet->MoveNext ();
	}
	if(pInfo)
	{
		pDC->SelectObject (&fFont);
		strLine.Format ("ODBC报表\t页%d\t",pInfo->m_nCurPage );
		pDC->TabbedTextOut (0,-500,strLine,2,&nFootTabStops,0);
	}
	pDC->SelectObject (pOld);
}

void CreportView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
	// TODO: 在此添加专用代码和/或调用基类
	OutReport(pDC,pInfo);
	CScrollView::OnPrint(pDC, pInfo);
}

⌨️ 快捷键说明

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