您的位置:首页 > 其它

vc对话框打印笔记

2016-12-07 16:16 260 查看
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,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vc 打印