vc对话框打印笔记

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,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值