void CPrint2Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
// AfxMessageBox(“ddd”);
// CDC dc;
// dc.CreateDC(NULL,_T(“HP”),NULL,NULL);
// CPrintDialog dlg(FALSE);
// dlg.GetDefaults();
// if(dlg.DoModal()==IDOK)
// dc.Attach(dlg.GetPrinterDC());
CDC dc;
CPrintDialog dlg(FALSE);
// CPrintDialog dlg(true);
if(dlg.DoModal()==IDOK)
{
// AfxMessageBox("ddd");
dc.Attach(dlg.GetPrinterDC());
DOCINFO di;
::ZeroMemory(&di,sizeof(DOCINFO));
di.cbSize=sizeof(DOCINFO);
di.lpszDocName=_T("Budget Figures for the Current Fiscal Year");
dc.SetAbortProc(AbortProc);
bUserAbort=true;
if(dc.StartDoc(&di)>0)
{
BOOL bContinue=TRUE;
for(int i=1;i<=3&& bContinue;i++){
dc.StartPage();
// if(i==1)
// bUserAbort=true;
//print here
dc.Ellipse(0,0,100,100);
dc.TextOut(100,100,"ddddddddddddd");
CString c;
c.Format("%d",i);
dc.TextOut(100,110,c);
if(dc.EndPage()<=0)
bContinue=FALSE;
}
if(bContinue)
dc.EndDoc();
else
dc.AbortDoc();
}
dc.DeleteDC();
}
}
bool bUserAbort;
BOOL CALLBACK AbortProc(HDC hDC,int nCode)
{
MSG msg;
while(!bUserAbort&&
::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
AfxGetThread()->PumpMessage();
// return TRUE;
return !bUserAbort;
}
OnPreparePrinting 设置打印参数
setMaxPage,弹出对话框,默认一页
OnBeginPrinting (CPrintInfo ,CDC ) 打印开始时。分配字体等资源GDI(WYSIWYG,字体基于打印机字体)
其中也可以确定打印区域的大小(GetDeviceCaps),和最大页.设定终止过程,禁用主窗口,弹出打印状态对话框。startDoc,
OnPrepareDC 每一页前 制定原点和OnDraw时的剪贴区域,CPrintInfo::m_nCurPage,要打印的页面。CDC::IsPrinting确定
当前是屏幕还是打印机。有时为NULL.设备与文档0,-y:viewport在设备中的坐标。CRgn::CreateRectRgn,CDC::SelectClipRgn
SetMapMode,SetScrollSize
CPrintInfo::m_bContinuePrinting=true(继续打印);false(结束打印)
OnDraw(屏幕and打印机) OnPrint 基类CScrollView::设置了视口原点与当前滚动位置匹配。
StartPage,OnPrepareDC
OnPrint (cdc,CprintInfo) 打印页眉,页编号等。打印时调用。或默认调用OnDraw(cdc).
比如:PrintHeader(pDC),PrintPageNumber(pDC,pInfo->m_nCurpage),viewport and clipping ,OnDraw(pDC);
EndPage,结束了吗?否,跳的OnPrepareDC.
是.EndDoc,启用主窗口。
OnEndPrinting 释放资源GDI
销毁打印状态对话框
CView::OnFilePrint
CView::OnFilePrintPreview 取代框架,并添加一个由CScrollView derived CPreviewView,add toolbox.OnDraw,被打印页的
矩形。设置比例参数。可打印区域和实际打印页匹配。调用OnPrint输出,cdc为preview窗口m_hDC,m_hAttribDC,供查询。
CView::OnEndPrintPreview OnEndPrinting 释放资源GDI,恢复窗口。CPrintInfo::m_bPreview,m_nNumPreviewPages页数。
Convert nPage into a scroll position in pt.
MM_TEXT,MM_LOMETRIC,