我在做一个可以识别分页符的文本文件的打印程序,用的是CEditView,请问该如何处理打印分页。

解决方案 »

  1.   

    CPrintDialog printDlg(FALSE);
    printDlg.GetDefaults();
    dc.Attach(printDlg.GetPrinterDC());
    dc.m_bPrinting = TRUE;CString strTitle;
    strTitle.LoadString(AFX_IDS_APP_TITLE);DOCINFO di;                   
    memset(&di, 0, sizeof (DOCINFO));
    di.cbSize = sizeof (DOCINFO);
    di.lpszDocName = strTitle;BOOL bPrintingOK = dc.StartDoc(&di);CPrintInfo Info;
    Info.m_rectDraw.SetRect(0,0, dc.GetDeviceCaps(HORZRES), dc.GetDeviceCaps(VERTRES));//##打印预处理,比如设置字体等,自己实现
    OnBeginPrinting(&dc, &Info); 
        
    int nPage;
    for ( nPage = 1; nPage <= m_nMaxPage && bPrintingOK; nPage++)
    {
        //##开始打一页
        dc.StartPage(); 
        Info.m_nCurPage = nPage;
        //##打印内容,自己实现
        OnPrint(&dc, &Info);
        //##该页结束
        bPrintingOK = (dc.EndPage() > 0);
    }
    //##打印结束处理
    OnEndPrinting(&dc, &Info);if (bPrintingOK)
        //##打印结束
        dc.EndDoc();
    else
        //##打印被取消
        dc.AbortDoc();
    //##收尾
    dc.Detach();