VC++分页打印实现

  VC++分页打印实现:

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
//打印对话框
DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_NOSELECTION | PD_HIDEPRINTTOFILE;
CPrintDialog dlg(FALSE);
if  (dlg.DoModal() == IDOK)
{
    
//获得打印机DC
    HDC hDC = dlg.GetPrinterDC();
    
if  (hDC ==  NULL )
    {
        
return ;
    }
    
//通过HDC获得CDC指针
    CDC *pDC = CDC::FromHandle(hDC);
    pDC->m_bPrinting = TRUE;
    
//文档信息
    DOCINFO di;
    ::ZeroMemory (&di, 
sizeof  (DOCINFO));
    di.cbSize = 
sizeof  (DOCINFO);
    di.lpszDocName = _T(
"Demo" );
    
//开始打印
    BOOL bPrinting = pDC->StartDoc(&di);
    
for  (UINT nPage =  0 ; nPage <  10  && bPrinting; nPage++)
    {
        pDC->StartPage();
        
//输出文本
        CString strText = _T( "" );
        strText.Format(_T(
"第%d页" ), nPage +  1 );
        pDC->TextOut(
100 0 , strText);
        
for  ( int  i =  0 ; i <  100 ; i++)
        {
            pDC->TextOut(
100 100  * (i +  1 ), _T( "Hello World!" ));
        }
        bPrinting = (pDC->EndPage() > 
0 );
    }

    
if  (bPrinting)
    {
        pDC->EndDoc();
    }
    
else
    {
        pDC->AbortDoc();
    }
    
//结束打印
    pDC->EndDoc();
    
//删除DC
    pDC->DeleteDC();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值