mfcprintdemoview.cpp
来自「Visual_C++[1].NET_Bible1 Visual_C++宝典书中」· C++ 代码 · 共 164 行
CPP
164 行
// lmouseup, lmousedown, mousemove
//
// MFCPrintDemoView.cpp : implementation of the CMFCPrintDemoView class
//
#include "stdafx.h"
#include "MFCPrintDemo.h"
#include "MFCPrintDemoDoc.h"
#include "MFCPrintDemoView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CMFCPrintDemoView
IMPLEMENT_DYNCREATE(CMFCPrintDemoView, CScrollView)
BEGIN_MESSAGE_MAP(CMFCPrintDemoView, CScrollView)
// 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()
// CMFCPrintDemoView construction/destruction
CMFCPrintDemoView::CMFCPrintDemoView()
: m_rectPrint(0,0,11505,-15105)
, m_sizePage(11520, 15120)
, m_sizePageScroll(m_sizePage.cx / 2, m_sizePage.cy / 2)
, m_sizeLineScroll(m_sizePage.cx / 100, m_sizePage.cy / 100)
{
}
CMFCPrintDemoView::~CMFCPrintDemoView()
{
}
BOOL CMFCPrintDemoView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CScrollView::PreCreateWindow(cs);
}
// CMFCPrintDemoView drawing
void CMFCPrintDemoView::OnDraw(CDC* pDC)
{
DrawRulers(*pDC);
DrawData(*pDC);
}
void CMFCPrintDemoView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
SetScrollSizes(MM_TWIPS,
m_sizePage,
m_sizePageScroll,
m_sizeLineScroll);
}
// CMFCPrintDemoView printing
BOOL CMFCPrintDemoView::OnPreparePrinting(CPrintInfo* pInfo)
{
pInfo->SetMaxPage(1);
return DoPreparePrinting(pInfo);
}
void CMFCPrintDemoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMFCPrintDemoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
// CMFCPrintDemoView diagnostics
#ifdef _DEBUG
void CMFCPrintDemoView::AssertValid() const
{
CScrollView::AssertValid();
}
void CMFCPrintDemoView::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CMFCPrintDemoDoc* CMFCPrintDemoView::GetDocument() const // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMFCPrintDemoDoc)));
return (CMFCPrintDemoDoc*)m_pDocument;
}
#endif //_DEBUG
void CMFCPrintDemoView::DrawRulers(CDC& dc)
{
// Draw a border around the page
dc.Rectangle(m_rectPrint);
CString str;
// Draw horizontal and vertical rulers
for (int i = 0; i <= 8; i++)
{
str.Format("%02d", i);
dc.TextOut(i * 1440, 0, str);
}
for (int i = 0; i <= 10; i++)
{
str.Format("%02d", i);
dc.TextOut(0, -i * 1440, str);
}
dc.MoveTo(0, -(m_sizePage.cy / 2));
dc.LineTo(m_sizePage.cx, -(m_sizePage.cy / 2));
}
void CMFCPrintDemoView::DrawData(CDC& dc)
{
CMFCPrintDemoDoc* pDoc = (CMFCPrintDemoDoc*)GetDocument();
ASSERT_VALID(pDoc);
CFont font;
font.CreateFont(-200, 0, 0, 0, 400, FALSE, FALSE, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_ROMAN,
"Arial");
CFont* pOldFont = (CFont*) dc.SelectObject(&font);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
int nHeight = tm.tmHeight + tm.tmExternalLeading;
int i;
int dataSize = pDoc->m_data.GetSize();
int cy = -(m_sizePage.cy / 2);
cy += (dataSize / 2) * nHeight;
int cx;
for (i = 0; i < dataSize; i++)
{
CSize size = dc.GetTextExtent(pDoc->m_data[i]);
cx = (m_sizePage.cx - size.cx) / 2;
dc.TextOut(cx, cy - (i * nHeight), pDoc->m_data[i]);
}
dc.SelectObject(pOldFont);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?