📄 reportview.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 + -