VC++分頁打印實現

  VC++分頁打印實現:spa

 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();
}

相關文章
相關標籤/搜索