• <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>
            隨筆-59  評(píng)論-36  文章-0  trackbacks-0
            文檔打印是許多Windows程序所必需的,在DOS下進(jìn)行圖形方面的打印是件比較麻煩的事,幸好Windows提供了統(tǒng)一接口,將程序員與具體的硬件系統(tǒng)隔離開(kāi)來(lái)。同時(shí)Visual   C++   MFC(微軟基礎(chǔ)類(lèi)庫(kù))則將Windows的API函數(shù)以類(lèi)的形式封裝了很多細(xì)節(jié),使得許多煩瑣的工作變得輕松起來(lái)。  

            一般來(lái)說(shuō),用Visual   C++編制需要打印的程序時(shí),在用AppWizard生成工程文件時(shí)就加入打印和打印預(yù)覽選項(xiàng)(該選項(xiàng)在AppWizard的第四步)。若用手工加入,則稍微麻煩些。  

            MFC對(duì)于打印的支持是在視類(lèi)CView中實(shí)現(xiàn)的,該類(lèi)中有如下幾個(gè)成員函數(shù)是與打印或打印預(yù)覽有關(guān)的:  

            BOOL   OnPreparePrinting(CPrintInfopInfo)  

            void   OnBeginPrinting(CDCpDC,   CPrintInfopInfo)  

            void   OnPrepareDC(CDCpDC,   CPrintInfopInfo)  

            void   OnPrint(CDCpDC,   CPrintInfopInfo)  

            void   OnEndPrinting(CDCpDC,   CPrintInfopInfo)  

            其中,pDC是打印或顯示的設(shè)備場(chǎng)指針,pInfo是打印過(guò)程信息指針。pInfo包含許多有用的信息,如打印的總頁(yè)數(shù)、當(dāng)前打印頁(yè)的頁(yè)碼、是打印還是打印預(yù)覽、是否繼續(xù)打印等,具體參數(shù)內(nèi)容和意義可以參考MFC聯(lián)機(jī)手冊(cè)。  

            以上幾個(gè)函數(shù)都是虛函數(shù),可以重載。若在用AppWizard生成工程文件時(shí)選擇了打印和打印預(yù)覽選項(xiàng),則函數(shù)OnPreparePrinting、OnBeginPrinting、OnEndPrinting自動(dòng)地被AppWizard插入到你的視類(lèi)中加以重載。另外兩個(gè)函數(shù)則可以手工加入,如果使用的是Visual   C++   4.0以上版本,可以通過(guò)ClassWizard加入到視類(lèi)中。  

            這幾個(gè)函數(shù)在用戶(hù)選擇打印命令時(shí)由應(yīng)用框架自動(dòng)調(diào)用,用戶(hù)程序不用顯式調(diào)用。下面講述這幾個(gè)函數(shù)在打印過(guò)程中的調(diào)用順序及其意義。  

            1.OnPreparePrinting  

            OnPreparePrinting函數(shù)最先被調(diào)用,用來(lái)初始化打印機(jī)等。比如,若沒(méi)有安裝打印機(jī),則該函數(shù)將提示用戶(hù)安裝打印機(jī)。用戶(hù)程序可以向其中加入別的初始化代碼,比如,計(jì)算打印你的文檔所需要的總頁(yè)數(shù),然后調(diào)用視類(lèi)中的打印機(jī)初始化函數(shù)BOOL   DoPreparePrinting(CPrintInfopInfo)即可。而用AppWizard生成的代碼中,OnPreparePrinting函數(shù)將只是調(diào)用函數(shù)DoPreparePrinting,并傳遞參數(shù)。  

            2.OnBeingPrinting  

            OnBeingPrinting函數(shù)是開(kāi)始打印文檔前調(diào)用的函數(shù),用戶(hù)可以在其中加入另一些對(duì)于打印過(guò)程的初始化代碼,比如分配打印過(guò)程中將要使用的“筆”(CPen)、“刷子”(CBrush)等,默認(rèn)的代碼中該函數(shù)將直接返回。  

            3.OnEndPrinting  

            OnEndPrinting函數(shù)是與OnBeginPrinting函數(shù)相對(duì)應(yīng)的函數(shù),它在打印完成后由應(yīng)用框架調(diào)用,用于釋放在OnBeginPrinting中分配的“對(duì)象”,如“筆”、“刷子”等,其默認(rèn)的代碼中該函數(shù)將直接返回。  

            4.OnPrepareDC  

            OnPrepareDC函數(shù)用于在打印前準(zhǔn)備打印設(shè)備場(chǎng),如窗口大小、原點(diǎn),視圖大小、原點(diǎn)等。同時(shí)該函數(shù)在視類(lèi)顯示文檔內(nèi)容時(shí)也被調(diào)用,默認(rèn)的代碼中該函數(shù)調(diào)用基類(lèi)中的OnPrepareDC函數(shù)。  

            5.OnPrint  

            OnPrint函數(shù)則是具體的打印過(guò)程,它利用前面準(zhǔn)備好的設(shè)備場(chǎng)進(jìn)行打印。  

            這幾個(gè)函數(shù)中,OnPreparePrinting、OnBeginPrinting、OnEndPrinting函數(shù)在一次打印過(guò)程中將只被調(diào)用一次,不管這一次打印內(nèi)容有多少頁(yè),而OnPrepareDC、OnPrint函數(shù)則每打印一頁(yè)都將被調(diào)用一次,這種調(diào)用次序?qū)τ诖蛴∈呛苡杏玫摹? 

            在編程中,相信大家只要用好這幾個(gè)基本函數(shù),一定會(huì)編制出滿(mǎn)意的Windows打印程序。
            posted on 2010-07-15 23:53 zhaoyg 閱讀(670) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): MFC學(xué)習(xí)筆記
            久久人人爽人人爽人人片AV东京热| 久久精品国产亚洲AV电影| 国产视频久久| 欧美麻豆久久久久久中文| 欧美国产成人久久精品| 69久久精品无码一区二区| 久久国产精品久久国产精品| 国产精品久久久99| 人妻久久久一区二区三区| 亚洲嫩草影院久久精品| 久久大香萑太香蕉av| 亚洲狠狠久久综合一区77777| 久久无码AV中文出轨人妻| 久久精品国产一区二区三区日韩| 久久久久亚洲AV无码去区首| 久久精品aⅴ无码中文字字幕重口| 激情久久久久久久久久| 久久精品人人做人人爽97| 久久夜色精品国产噜噜亚洲a| 久久香蕉一级毛片| 久久人爽人人爽人人片AV| 亚洲国产天堂久久久久久| 国産精品久久久久久久| 日本道色综合久久影院| 国产情侣久久久久aⅴ免费| 亚洲国产精品一区二区久久hs| 久久一区二区免费播放| 国产亚洲精午夜久久久久久| 久久精品国产69国产精品亚洲| 久久婷婷激情综合色综合俺也去| 伊人精品久久久久7777| 香蕉aa三级久久毛片| 久久久久久极精品久久久| 久久精品国产福利国产琪琪| 伊人色综合久久天天| 日本三级久久网| 国产高清美女一级a毛片久久w| 久久精品国产精品亚洲精品| 久久久精品午夜免费不卡| 91精品国产综合久久香蕉| 久久精品亚洲精品国产欧美|