📄 scrollprintview.cpp
字号:
// ScrollPrintView.cpp : implementation file
//
#include "stdafx.h"
#include "a1.h"
#include "ScrollPrintView.h"
//#define ID_FILE_PRINT1 WM_USER +2
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CScrollPrintView
IMPLEMENT_DYNCREATE(CScrollPrintView, CMyView)
CScrollPrintView::CScrollPrintView()
{
CSize sizeTotal;
this->m_draw=NULL;
// TODO: calculate the total size of this view
sizeTotal.cx = sizeTotal.cy = 1;
SetScrollSizes(MM_TEXT, sizeTotal);
lines=10;
}
CScrollPrintView::~CScrollPrintView()
{
}
BEGIN_MESSAGE_MAP(CScrollPrintView, CView)
//{{AFX_MSG_MAP(CScrollPrintView)
ON_WM_HSCROLL()
ON_WM_VSCROLL()
ON_WM_DESTROY()
ON_WM_SIZE()
ON_WM_CREATE()
ON_WM_PAINT()
//}}AFX_MSG_MAP
ON_COMMAND(ID_FILE_PRINT, OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CMyView::OnFilePrintPreview)
ON_COMMAND(ID_FILE_PRINT_DIRECT, OnFilePrint)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CScrollPrintView drawing
void CScrollPrintView::OnInitialUpdate()
{
CMyView::OnInitialUpdate();
}
void CScrollPrintView::OnDraw(CDC* pDC)
{
CDocument* pDoc = GetDocument();
}
/////////////////////////////////////////////////////////////////////////////
// CScrollPrintView diagnostics
#ifdef _DEBUG
void CScrollPrintView::AssertValid() const
{
CMyView::AssertValid();
}
void CScrollPrintView::Dump(CDumpContext& dc) const
{
CMyView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CScrollPrintView message handlers
void CScrollPrintView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CMyView::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CScrollPrintView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: Add your message handler code here and/or call default
CMyView::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CScrollPrintView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
this->m_draw->OnBeginPrinting(pDC,pInfo);
CMyView::OnBeginPrinting(pDC, pInfo);
}
void CScrollPrintView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
if(m_draw!=NULL)
{
CDC* m_pdcPrint;
m_pdcPrint=GetDC();
int ypixperi=m_pdcPrint->GetDeviceCaps(LOGPIXELSY);
m_draw->InitData(printInfo.m_rectDraw.Width(),
printInfo.m_rectDraw.Height(),
ypixperi,m_pdcPrint,
&printInfo,m_draw->GetListCtrl());
this->ReleaseDC(m_pdcPrint);
}
CMyView::OnEndPrinting(pDC, pInfo);
}
void CScrollPrintView::OnEndPrintPreview(CDC* pDC, CPrintInfo* pInfo, POINT point, CPreView* pView)
{
// TODO: Add your specialized code here and/or call the base class
// m_draw->OnEndPrintPreview(pDC,pInfo,point,pView);
CMyView::OnEndPrintPreview(pDC, pInfo, point, pView);
}
void CScrollPrintView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
// TODO: Add your specialized code here and/or call the base class
if(m_draw!=NULL)
{
this->m_draw->PrintDlg(pDC,pInfo);
this->m_draw->PrintPageHeader(pDC,pInfo);
this->m_draw->PrintPageFooter(pDC, pInfo);
}
//mr CScrollView::OnPrint(pDC, pInfo);
}
void CScrollPrintView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
CMyView::OnPrepareDC(pDC, pInfo);
}
BOOL CScrollPrintView::OnPreparePrinting(CPrintInfo* pInfo)
{
// TODO: call DoPreparePrinting to invoke the Print dialog box
return DoPreparePrinting(pInfo);
}
void CScrollPrintView::OnFilePrint()
{
CMyView::OnFilePrint();
}
//DEL void CScrollPrintView::OnFilePrintPreview()
//DEL {
//DEL CMyView::OnFilePrintPreview();
//DEL }
void CScrollPrintView::SelectDrawDlg(CDrawDlg *pdraw)
{
this->m_draw=pdraw;
m_draw->CalcUnitWidth();
this->PostMessage(WM_SIZE);
}
void CScrollPrintView::OnDestroy()
{
CMyView::OnDestroy();
}
BOOL CScrollPrintView::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
return CMyView::DestroyWindow();
}
void CScrollPrintView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
this->GetClientRect(&printInfo.m_rectDraw);
if(m_draw!=NULL)
{
CDC* m_pdcPrint;
m_pdcPrint=GetDC();
int ypixperi=m_pdcPrint->GetDeviceCaps(LOGPIXELSY);
printInfo.m_rectDraw.bottom=max(ypixperi*2,printInfo.m_rectDraw.bottom);
printInfo.m_rectDraw.right=max(m_draw->GetTotalChars()*10,printInfo.m_rectDraw.right);
m_draw->InitData(printInfo.m_rectDraw.Width(),
printInfo.m_rectDraw.Height(),
ypixperi,m_pdcPrint,
&printInfo,m_draw->GetListCtrl());
this->SetScrollSizes(MM_TEXT,
CSize(printInfo.m_rectDraw.Width(),m_draw->GetMaxPages()*(printInfo.m_rectDraw.Height())),
CSize(printInfo.m_rectDraw.Width(),printInfo.m_rectDraw.Height())
);
this->ReleaseDC(m_pdcPrint);
}
else
afxDump<<"\n Nom_draw OnSize";
}
int CScrollPrintView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
this->SetWindowText("打印");
return 0;
}
void CScrollPrintView::OnPaint()
{
CPaintDC dc(this); // device context for painting
OnPrepareDC(&dc);
if(m_draw!=NULL){
this->m_draw->PaintDlg(&dc,&this->printInfo);
}
// Do not call CView::OnPaint() for painting messages
}
void CScrollPrintView::OnFilePrintPreview()
{
CMyView::OnFilePrintPreview();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -