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

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

            MFC對于打印的支持是在視類CView中實現的,該類中有如下幾個成員函數是與打印或打印預覽有關的:  

            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是打印或顯示的設備場指針,pInfo是打印過程信息指針。pInfo包含許多有用的信息,如打印的總頁數、當前打印頁的頁碼、是打印還是打印預覽、是否繼續打印等,具體參數內容和意義可以參考MFC聯機手冊。  

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

            這幾個函數在用戶選擇打印命令時由應用框架自動調用,用戶程序不用顯式調用。下面講述這幾個函數在打印過程中的調用順序及其意義。  

            1.OnPreparePrinting  

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

            2.OnBeingPrinting  

            OnBeingPrinting函數是開始打印文檔前調用的函數,用戶可以在其中加入另一些對于打印過程的初始化代碼,比如分配打印過程中將要使用的“筆”(CPen)、“刷子”(CBrush)等,默認的代碼中該函數將直接返回。  

            3.OnEndPrinting  

            OnEndPrinting函數是與OnBeginPrinting函數相對應的函數,它在打印完成后由應用框架調用,用于釋放在OnBeginPrinting中分配的“對象”,如“筆”、“刷子”等,其默認的代碼中該函數將直接返回。  

            4.OnPrepareDC  

            OnPrepareDC函數用于在打印前準備打印設備場,如窗口大小、原點,視圖大小、原點等。同時該函數在視類顯示文檔內容時也被調用,默認的代碼中該函數調用基類中的OnPrepareDC函數。  

            5.OnPrint  

            OnPrint函數則是具體的打印過程,它利用前面準備好的設備場進行打印。  

            這幾個函數中,OnPreparePrinting、OnBeginPrinting、OnEndPrinting函數在一次打印過程中將只被調用一次,不管這一次打印內容有多少頁,而OnPrepareDC、OnPrint函數則每打印一頁都將被調用一次,這種調用次序對于打印是很有用的。  

            在編程中,相信大家只要用好這幾個基本函數,一定會編制出滿意的Windows打印程序。
            posted on 2010-07-15 23:53 zhaoyg 閱讀(679) 評論(0)  編輯 收藏 引用 所屬分類: MFC學習筆記
            久久成人小视频| 国产高潮久久免费观看| 久久强奷乱码老熟女网站| 2019久久久高清456| 性做久久久久久久| 久久精品国产只有精品2020| 精品久久久久久国产牛牛app | 久久精品国产半推半就| 人人狠狠综合久久亚洲婷婷| 亚洲国产成人精品女人久久久 | 欧美精品一区二区精品久久| 久久亚洲2019中文字幕| 久久亚洲私人国产精品| 久久精品人妻一区二区三区| 青青草原精品99久久精品66| 久久久久国产一区二区| 国产精品久久影院| 亚洲国产成人精品无码久久久久久综合| 久久精品国产亚洲av麻豆图片| 99久久www免费人成精品| 久久久久亚洲AV片无码下载蜜桃| 无码人妻久久一区二区三区蜜桃| 99久久国产亚洲高清观看2024 | 久久久久免费看成人影片| 亚洲Av无码国产情品久久| 99久久亚洲综合精品成人| 色欲综合久久中文字幕网| 亚洲欧美另类日本久久国产真实乱对白 | 亚洲人成网亚洲欧洲无码久久| 久久久久亚洲?V成人无码| 色综合合久久天天综合绕视看| 久久久噜噜噜久久中文福利| 久久亚洲AV成人出白浆无码国产| 欧美伊人久久大香线蕉综合| 亚洲中文字幕伊人久久无码| 久久亚洲av无码精品浪潮| 久久久久久国产精品免费免费 | 亚洲国产婷婷香蕉久久久久久| 欧美午夜精品久久久久久浪潮| 久久一本综合| 亚洲人成伊人成综合网久久久|