• <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ǔ)類庫(kù))則將Windows的API函數(shù)以類的形式封裝了很多細(xì)節(jié),使得許多煩瑣的工作變得輕松起來(lái)。  

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

            MFC對(duì)于打印的支持是在視類CView中實(shí)現(xiàn)的,該類中有如下幾個(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插入到你的視類中加以重載。另外兩個(gè)函數(shù)則可以手工加入,如果使用的是Visual   C++   4.0以上版本,可以通過(guò)ClassWizard加入到視類中。  

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

            1.OnPreparePrinting  

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

            2.OnBeingPrinting  

            OnBeingPrinting函數(shù)是開(kāi)始打印文檔前調(diào)用的函數(shù),用戶可以在其中加入另一些對(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ù)在視類顯示文檔內(nèi)容時(shí)也被調(diào)用,默認(rèn)的代碼中該函數(shù)調(diào)用基類中的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ì)編制出滿意的Windows打印程序。
            posted on 2010-07-15 23:53 zhaoyg 閱讀(686) 評(píng)論(0)  編輯 收藏 引用 所屬分類: MFC學(xué)習(xí)筆記
            香港aa三级久久三级老师2021国产三级精品三级在 | 久久久久女教师免费一区| 一级做a爰片久久毛片人呢| 91精品婷婷国产综合久久| 精品久久久久久久久久中文字幕| 久久久91人妻无码精品蜜桃HD | 伊人久久大香线蕉AV一区二区| 99久久做夜夜爱天天做精品| 久久久无码精品亚洲日韩按摩| 国产激情久久久久影院| 国产精品久久久久久久人人看 | 久久久久久久久久久| 777久久精品一区二区三区无码| 亚洲国产成人精品91久久久 | 久久久久久噜噜精品免费直播| 亚洲综合精品香蕉久久网| 久久AⅤ人妻少妇嫩草影院| 伊人久久无码精品中文字幕| 久久99国内精品自在现线| 精品久久久久久无码不卡| 99久久精品免费国产大片| 人妻少妇久久中文字幕| 人妻少妇精品久久| 一级做a爱片久久毛片| 久久综合中文字幕| 国产亚洲欧美精品久久久| 亚洲日韩中文无码久久| 亚洲国产一成久久精品国产成人综合 | 色狠狠久久综合网| 精品国产一区二区三区久久蜜臀| 久久er99热精品一区二区| 亚洲中文久久精品无码ww16| 久久亚洲精品无码播放| 久久99精品九九九久久婷婷| 久久综合九色综合久99| 久久99国产精品久久久| 久久精品99久久香蕉国产色戒| 久久久国产精华液| 久久人人爽人人爽人人片AV不| 久久精品国产精品亚洲精品| 99久久精品免费看国产一区二区三区 |