• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            幽魂國(guó)度

             

            實(shí)現(xiàn)簡(jiǎn)單打印預(yù)覽功能

            打印預(yù)覽實(shí)現(xiàn)流程:
                 首先調(diào)用CFormView::OnFilePrintPreview,再依次調(diào)用自己的所重寫的虛函數(shù)OnPreparePrinting(CPrintInfo* pInfo)、OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)、OnPrint(CDC* pDC, CPrintInfo* pInfo)、CFormView::OnPrint(pDC, pInfo);,當(dāng)關(guān)閉打印預(yù)覽時(shí)調(diào)用OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)  ,結(jié)束打印。
            部分代碼:
              ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
              BOOL CElectronValveView::OnPreparePrinting(CPrintInfo* pInfo)
            {
             // default preparation
              pInfo->SetMinPage(1); //設(shè)置打印文件起始頁 
              pInfo->SetMaxPage(1); //設(shè)置打印文件終止頁
              return   DoPreparePrinting(pInfo);

            void CElectronValveView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
            {
             // TODO: add extra initialization before printing
              m_ChartCtrl.GetBottomAxis()->GetGrid()->SetColor(BlackColor);//設(shè)置柵格顏色為黑色,不然打印的時(shí)候太淡
              m_ChartCtrl.GetLeftAxis()->GetGrid()->SetColor(BlackColor);
            }
            void CElectronValveView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
            {
             // TODO: add cleanup after printing
             m_ChartCtrl.GetBottomAxis()->GetGrid()->SetColor(BlueColor);//恢復(fù)顏色,不然控件中也是這個(gè)顏色了。
             m_ChartCtrl.GetLeftAxis()->GetGrid()->SetColor(BlueColor);
            }
            void CElectronValveView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
            {
             // TODO: add customized printing code here
             CMainFrame* pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd 
             CDC *pCurrentDC = GetDC();        // will have dimensions of the client area
             CSize PaperPixelsPerInch(pDC->GetDeviceCaps(LOGPIXELSX), pDC->GetDeviceCaps(LOGPIXELSY));
             //獲得打印紙?jiān)O(shè)備每英寸的像素?cái)?shù),應(yīng)該是一樣的。
                CSize ScreenPixelsPerInch(pCurrentDC->GetDeviceCaps(LOGPIXELSX), pCurrentDC->GetDeviceCaps(LOGPIXELSY));
             //應(yīng)該是獲得屏幕的每英寸的像素?cái)?shù),應(yīng)該是一樣的
             
             CSize m_PaperSize,m_LogicalPageSize;
             m_PaperSize = CSize(pDC->GetDeviceCaps(HORZRES), pDC->GetDeviceCaps(VERTRES));
             //把紙張所得的像素對(duì)應(yīng)的屏幕大小得到。
             m_LogicalPageSize.cx = ScreenPixelsPerInch.cx * m_PaperSize.cx / PaperPixelsPerInch.cx * 3 / 4;
             m_LogicalPageSize.cy = ScreenPixelsPerInch.cy * m_PaperSize.cy / PaperPixelsPerInch.cy * 3 / 4;
             
             //這里必須這樣設(shè),是為了和ChartCtrl中的打印對(duì)應(yīng)起來。
                pDC->SetMapMode(MM_ANISOTROPIC);
                pDC->SetWindowExt(m_LogicalPageSize);
                pDC->SetViewportExt(m_PaperSize);    
                pDC->SetWindowOrg(0, 0);   
             
             CRect rcClient,rcClient1;
             GetClientRect(&rcClient1); //得到的仍然是打印預(yù)覽顯示客戶區(qū)的大小
             rcClient=pInfo->m_rectDraw;//打印紙的客戶區(qū)
             double ratioX,ratioY;
             ratioX=(double)rcClient.right/(double)rcClient1.Width();
             ratioY=(double)rcClient.bottom/(double)rcClient1.Height();
             int nWid,left,right;
             CFont *pOldFont;
             CFont fnBig,fnBig1;
             CPen Pen,*OldPen;
             
             //畫主框
             Pen.CreatePen(PS_SOLID,2,RGB(0,0,0));
             OldPen=pDC->SelectObject(&Pen);
             pDC->Rectangle(20,20,m_LogicalPageSize.cx-20,m_LogicalPageSize.cy-20);
             pDC->SelectObject(OldPen);

             //畫標(biāo)題欄
             pDC->MoveTo(20,60);
             pDC->LineTo(m_LogicalPageSize.cx-20,60);
             pDC->MoveTo(20,85);
             pDC->LineTo(m_LogicalPageSize.cx-20,85);
             pDC->SelectObject(&Pen);
             pDC->MoveTo(20,110);
             pDC->LineTo(m_LogicalPageSize.cx-20,110);
             pDC->SelectObject(OldPen);
             pDC->MoveTo(196,60); 
             pDC->LineTo(196,110);
             pDC->MoveTo(390,60); 
             pDC->LineTo(390,110);

             //畫結(jié)果欄
             pDC->MoveTo(20,430); 
             pDC->LineTo(m_LogicalPageSize.cx-20,430);
             pDC->MoveTo(85,430); 
             pDC->LineTo(85,470);//測(cè)量結(jié)果1分界線豎線
             pDC->MoveTo((m_LogicalPageSize.cx-85-100)/4+85,430);//開啟響應(yīng)時(shí)間分界線 
             pDC->LineTo((m_LogicalPageSize.cx-85-100)/4+85,470);
             pDC->MoveTo((m_LogicalPageSize.cx-85-100)/4*2+85,430); 
             pDC->LineTo((m_LogicalPageSize.cx-85-100)/4*2+85,470);
             pDC->MoveTo((m_LogicalPageSize.cx-85-100)/4*3+85,430); 
             pDC->LineTo((m_LogicalPageSize.cx-85-100)/4*3+85,470);
             pDC->MoveTo((m_LogicalPageSize.cx-85-100)/4*4+85,430); 
             pDC->LineTo((m_LogicalPageSize.cx-85-100)/4*4+85,470);
             pDC->MoveTo(20,450); 
             pDC->LineTo(m_LogicalPageSize.cx-20,450);
             pDC->SelectObject(&Pen);
             pDC->MoveTo(20,470); 
             pDC->LineTo(m_LogicalPageSize.cx-20,470); 
             pDC->SelectObject(OldPen);

              //寫標(biāo)題
             fnBig.CreatePointFont(200,"黑體",pDC);
             pOldFont=pDC->SelectObject(&fnBig);
             
             nWid=rcClient1.Width();
             left=rcClient1.left;
             right=rcClient1.right;
             pDC->SetTextAlign(TA_CENTER);
             pDC->TextOut(m_LogicalPageSize.cx/2,30,"XXX性能測(cè)試報(bào)告");
             fnBig.DeleteObject();
             fnBig.CreatePointFont(110,"宋體",pDC);
             pOldFont=pDC->SelectObject(pOldFont);
             pOldFont=pDC->SelectObject(&fnBig);
             pDC->SetTextAlign(TA_LEFT);
             pDC->TextOut(25,67,"產(chǎn)品名稱:"+pMain->m_strProductName);
             pDC->TextOut(25,92,"產(chǎn)品圖號(hào):"+pMain->m_strProductPictureNo);
             pDC->TextOut(201,67,"檢測(cè)時(shí)間:"+pMain->m_strMeasureTime0);
             pDC->TextOut(201,92,"生產(chǎn)廠家:"+pMain->m_strProductFactory);
             pDC->TextOut(395,67,"產(chǎn)品編號(hào):"+pMain->m_strProductBianHao);
             pDC->TextOut(395,92,"檢 驗(yàn) 員:"+pMain->m_strMeasurerName);

             CString aa;
             aa.Format("%d(ms)",m_iPreviousTime1);
             fnBig.DeleteObject();
             fnBig.CreatePointFont(85,"宋體",pDC);
             pDC->SelectObject(&fnBig);
             pDC->TextOut(25,420,"預(yù)置電信號(hào)時(shí)間:"+aa);
             aa.Format("%d",m_iCurveNumber1);
             pDC->TextOut(150,420,"曲線數(shù)量:"+aa);
             fnBig1.CreatePointFont(100,"宋體",pDC);
             pOldFont=pDC->SelectObject(&fnBig1);
             pDC->TextOut(25,455,"測(cè)試結(jié)果"); 
             pDC->TextOut(90,435,"開啟響應(yīng)時(shí)間(ms)");
             pDC->TextOut(120,455,m_strOpenResponseTime);
             pDC->TextOut((m_LogicalPageSize.cx-85-100)/4+85+5,435,"開啟換向時(shí)間(ms)");
             pDC->TextOut((m_LogicalPageSize.cx-85-100)/4+85+5+30,455,m_strOpenInvertTime);
             pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*2+85+5,435,"關(guān)閉響應(yīng)時(shí)間(ms)");
             pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*2+85+5+30,455,m_strCloseResponseTime);
             pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*3+85+5,435,"關(guān)閉換向時(shí)間(ms)");
             pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*3+85+5+30,455,m_strCloseInvertTime); 
             pDC->TextOut((m_LogicalPageSize.cx-85-100)/4*4+85+10,435,"檢測(cè)結(jié)論");
             
             //最后一欄
             fnBig.DeleteObject();
             fnBig.CreatePointFont(130,"宋體",pDC);
             pDC->SelectObject(&fnBig);
             pDC->TextOut(m_LogicalPageSize.cx-180,m_LogicalPageSize.cy-20-20,"審核:");
             pDC->SetTextAlign(TA_LEFT);

             CPoint offset(16,110);
             m_ChartCtrl.Print1(offset,pDC,pInfo,0);//調(diào)用chart類來畫表格和曲線
             fnBig.DeleteObject();

             CFormView::OnPrint(pDC, pInfo);
            }
            本程序利用ChartCtrl來實(shí)現(xiàn)繪制表格和曲線。

            posted on 2009-12-31 15:26 閱讀(1270) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久人人爽人人爽人人片AV东京热| 久久精品无码一区二区三区免费 | 久久se精品一区精品二区| 久久成人精品视频| 99久久免费只有精品国产| 亚洲日本va午夜中文字幕久久| 一本一道久久综合狠狠老 | 91性高湖久久久久| 久久久久久久波多野结衣高潮| 99久久国产热无码精品免费| 久久夜色精品国产www| 久久一日本道色综合久久| 91精品国产91久久久久久青草 | 亚洲欧洲中文日韩久久AV乱码| 久久夜色精品国产网站| 伊人久久大香线蕉精品不卡| 久久99国产精一区二区三区| 久久久久免费精品国产| 久久91这里精品国产2020| 91精品国产高清久久久久久io | 久久天天躁狠狠躁夜夜96流白浆 | 2021国内久久精品| 国产精品久久久久久久午夜片| 亚洲人成伊人成综合网久久久| 久久精品亚洲男人的天堂 | 伊人久久综合精品无码AV专区 | 亚洲国产成人久久综合碰| 亚洲国产成人久久综合一| 国产精品免费看久久久| 亚洲va久久久噜噜噜久久男同| 热久久最新网站获取| 久久久亚洲精品蜜桃臀| 久久www免费人成精品香蕉| 久久精品国产影库免费看| 久久精品毛片免费观看| 久久丫精品国产亚洲av不卡| 香蕉久久av一区二区三区| 国内精品伊人久久久久AV影院| 久久天天躁狠狠躁夜夜网站| 国内精品久久久久久99| 青青草原1769久久免费播放|