• <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í)筆記
            久久棈精品久久久久久噜噜| 大伊人青草狠狠久久| 国产精品免费福利久久| 99久久人人爽亚洲精品美女| 7国产欧美日韩综合天堂中文久久久久 | 欧美日韩中文字幕久久久不卡| 伊人久久综在合线亚洲2019| 久久狠狠一本精品综合网| 热re99久久精品国99热| 欧美性大战久久久久久| 伊人久久无码中文字幕| 伊人色综合久久天天| 国产一区二区久久久| 91亚洲国产成人久久精品| 日韩十八禁一区二区久久| 色欲av伊人久久大香线蕉影院| 99久久国产综合精品成人影院| 久久婷婷五月综合成人D啪 | 香港aa三级久久三级老师2021国产三级精品三级在 | 久久久精品人妻一区二区三区四| 精品无码久久久久久久动漫| 久久精品免费观看| 国产日产久久高清欧美一区| 思思久久好好热精品国产| 久久久久久国产a免费观看不卡| 亚洲精品无码久久久影院相关影片| 国产精品成人久久久久三级午夜电影| 久久综合亚洲欧美成人| 亚洲国产日韩欧美久久| 久久精品国产亚洲精品| 久久久久久亚洲Av无码精品专口| 亚洲精品99久久久久中文字幕| 91久久成人免费| 97久久精品人人澡人人爽| 精品久久久久久成人AV| 无码国内精品久久人妻蜜桃| 亚洲国产日韩欧美综合久久| 一本久久免费视频| 久久婷婷五月综合国产尤物app| 99久久国产热无码精品免费| 色欲av伊人久久大香线蕉影院|