c文檔讀寫(xiě)與打印PPT課件_第1頁(yè)
c文檔讀寫(xiě)與打印PPT課件_第2頁(yè)
c文檔讀寫(xiě)與打印PPT課件_第3頁(yè)
c文檔讀寫(xiě)與打印PPT課件_第4頁(yè)
c文檔讀寫(xiě)與打印PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Visual C+與面向?qū)ο蟪绦蛟O(shè)計(jì)教程與面向?qū)ο蟪绦蛟O(shè)計(jì)教程第十五章 文檔讀寫(xiě)與打印 第1頁(yè)/共25頁(yè)教學(xué)目標(biāo)教學(xué)目標(biāo) 序列化 文檔打印編程技術(shù)第2頁(yè)/共25頁(yè)學(xué)習(xí)要求學(xué)習(xí)要求 深入理解序列化的基本思想 掌握序列化及相應(yīng)處理代碼的編制 了解MFC的打印工作流程 掌握打印程序編制第3頁(yè)/共25頁(yè)授授 課課 內(nèi)內(nèi) 容容 15.1 序列化(Serialize) 15.2 打印和打印預(yù)覽 自定義類(lèi)的序列化 15.4 編寫(xiě)?yīng)毩⒌拇蛴√幚沓绦?15.5 更新命令用戶(hù)接口(UI)消息 調(diào)試技術(shù) 程序設(shè)計(jì)舉例第4頁(yè)/共25頁(yè)15.1 序列化(Serialize) 文檔對(duì)象可以將其當(dāng)前狀態(tài)(由其成員變量的值表

2、示)寫(xiě)入到永久性存儲(chǔ)體(通常是指磁盤(pán))中,以后還可從永久性存儲(chǔ)體中讀取對(duì)象的狀態(tài)(載入),從而重建對(duì)象。 在文檔打開(kāi)時(shí)能夠自動(dòng)把文檔中的數(shù)據(jù)轉(zhuǎn)換為文檔類(lèi)所支持的對(duì)象,在保存文檔時(shí)能夠自動(dòng)將文檔類(lèi)對(duì)象轉(zhuǎn)換為文檔數(shù)據(jù)格式; CArchive類(lèi)運(yùn)算符:插入()()()第5頁(yè)/共25頁(yè)修改數(shù)據(jù)的存盤(pán) 設(shè)置修改標(biāo)志的成員函數(shù)CDocument:SetModifiedFlag void SetModifiedFlag( BOOL bModified = TRUE ); 設(shè)置的時(shí)機(jī) 一般在視圖類(lèi)函數(shù)中,修改數(shù)據(jù)后調(diào)用第6頁(yè)/共25頁(yè)例15-1 序列化 為例11-7的吹泡泡程序增加序列化 代碼if(ar.Is

3、Storing() ar m_nBubbleCount;for(int i=0; im_nBubbleCount; i+)ar m_nBubbleCount;for(int i=0; i m_rectBubblei; 第7頁(yè)/共25頁(yè)注意事項(xiàng) 的方向 變量存盤(pán)與取盤(pán)的順序,必須保證一致! 計(jì)數(shù)器變量應(yīng)在數(shù)組之前第8頁(yè)/共25頁(yè)15.2 打印和打印預(yù)覽 顯示與打印的相同之處 顯示與打印的不同之處第9頁(yè)/共25頁(yè)顯示與打印的相同之處 文檔打印時(shí),OnDraw函數(shù)接收到的設(shè)備描述表對(duì)象是與當(dāng)前打印相關(guān)的CDc對(duì)象。 實(shí)現(xiàn)“所見(jiàn)即所得”(OnDraw為共用函數(shù)) 顯示的調(diào)用順序:OnPaint-OnD

4、raw 打印的調(diào)用順序:OnPrint-OnDraw MM_TEXT模式編程 打印機(jī)與屏幕顯示坐標(biāo)模式相同第10頁(yè)/共25頁(yè)顯示與打印的不同之處 分辨率不同Arial字體:printer-50 screen-20 邊界處理不同 屏幕是無(wú)界的 打印紙是有界的第11頁(yè)/共25頁(yè)例15-2 修改例11-7的程序并觀(guān)察其打印結(jié)果。void CMyView:OnDraw(CDC* pDC) CRect rect; GetClientRect(&rect);pDC-Rectangle(rect); /畫(huà)邊框for(int i=0; im_nBubbleCount; i+)/ 在視圖上顯示文檔數(shù)據(jù)

5、pDC-Ellipse(pDoc-m_rectBubblei); 第12頁(yè)/共25頁(yè)例15-3 改進(jìn)吹泡泡程序,使之打印輸出與屏幕顯示的比例相近 / 設(shè)置映射模式void CMyView:OnPrepareDC(CDC *pDC, CPrintInfo *pInfo)pDC-SetMapMode(MM_LOMETRIC);CView:OnPrepareDC(pDC, pInfo); 第13頁(yè)/共25頁(yè)例15-3 / 響應(yīng)點(diǎn)擊鼠標(biāo)左鍵消息CClientDC dc(this);/ 設(shè)置設(shè)備環(huán)境OnPrepareDC(&dc);if(pDoc-m_nBubbleCount m_rectBub

6、blepDoc-m_nBubbleCount = rect; pDoc-m_nBubbleCount+; pDoc-SetModifiedFlag();/ 設(shè)置修改標(biāo)志第14頁(yè)/共25頁(yè)CPrintInfo類(lèi) 數(shù)據(jù)成員m_nCurPage(當(dāng)前正在打印的頁(yè)碼); m_rectDraw(當(dāng)前可用頁(yè)面區(qū)域); 成員函數(shù)SetMinPage()(指定文檔的首頁(yè)頁(yè)碼)SetMaxPage()(指定文檔的尾頁(yè)頁(yè)碼)取關(guān)于打印頁(yè)碼的設(shè)置UINT GetMinPage( ) const;UINT GetMaxPage( ) const;第15頁(yè)/共25頁(yè)打印和打印預(yù)覽的主要過(guò)程l調(diào)用OnPreparePri

7、nting函數(shù)創(chuàng)建與打印有關(guān)的設(shè)備描述表對(duì)象l調(diào)用OnBeginPrinting函數(shù)并基于已創(chuàng)建的設(shè)備描述表對(duì)象來(lái)設(shè)置文檔特性,將任何需要的信息保存在設(shè)備描述表對(duì)象中例如分配字體、畫(huà)筆、畫(huà)刷和其他用于打印的對(duì)象。l調(diào)用OnPrepareDC函數(shù)為打印設(shè)置文本或繪圖員性,調(diào)整視口原點(diǎn)以便打印當(dāng)前頁(yè)。l調(diào)用OnPrint函數(shù),該函數(shù)在調(diào)用OnDraw前先選擇一種字體或其他由OnBeginPrinting分配的對(duì)象,然后調(diào)用OnDraw函數(shù)執(zhí)行輸出。l調(diào)用0nEndPrinting刪除由onBeginPrinting分配的所有對(duì)象。(對(duì)于每頁(yè),3,4兩步反復(fù)調(diào)用)第16頁(yè)/共25頁(yè)自定義類(lèi)的序列化

8、從CObject類(lèi)派生出自定義類(lèi) 重載自定義類(lèi)的Serialize()成員函數(shù) 說(shuō)明中,加入DECLARE_SERIAL()宏 為自定義類(lèi)定義一個(gè)不帶參數(shù)的構(gòu)造函數(shù); 為自定義類(lèi)重載賦值運(yùn)算符“=”; 在自定義類(lèi)的源代碼文件中加入IMPLEMENT_SERIAL()宏。第17頁(yè)/共25頁(yè)15.4 編寫(xiě)?yīng)毩⒌拇蛴√幚沓绦?利用現(xiàn)有模塊 打印頁(yè)眉、正文、頁(yè)腳; 選頁(yè)打印第18頁(yè)/共25頁(yè)OnPrint函數(shù) 打印頁(yè)眉CDocument:GetTitle ( )取當(dāng)前文檔名CDC:GetTextExtent ( ) 計(jì)算字符串在當(dāng)前映射模式下的寬度和高度 打印泡泡數(shù)據(jù) 打印頁(yè)腳MM_WIPS模式1/1

9、440英寸point.y-=360第19頁(yè)/共25頁(yè)15.5 更新命令用戶(hù)接口(UI)消息 菜單選項(xiàng)是否無(wú)效的?(灰色顯示)1、在窗口類(lèi)中加入處理更新命令用戶(hù)接口消息函數(shù)的說(shuō)明;2、在窗口類(lèi)的消息映射宏中加入更新命令用戶(hù)接口宏;3、編寫(xiě)更新命令用戶(hù)接口消息處理函數(shù)。打勾: (m_nGrad為3,則打勾)pCmdUI-SetCheck(m_nGrad=3);變灰: (m_nGrad為0,則變灰,即:不為0有效)pCmdUI-Enable(m_nGrad!=0);第20頁(yè)/共25頁(yè)調(diào)試技術(shù) Developer Studio的輸出窗口 激活或取消 選項(xiàng) Build(建立) Debug(調(diào)試) Fin

10、d In Files 1(在文件1中查找) Find In Files 2(在文件2中查找) Results(結(jié)果)。 第21頁(yè)/共25頁(yè)程序設(shè)計(jì)舉例 例15-1 實(shí)現(xiàn)吹泡泡程序的序列化功能。 例15-2 修改例11-6的程序并觀(guān)察其打印結(jié)果。 例15-3 改進(jìn)吹泡泡程序,使之打印輸出與屏幕顯示的比例相近。 例15-4 聲明一個(gè)Person類(lèi),并使之支持序列化。 例15-5 修改例15-3的吹泡泡程序,使其打印每個(gè)泡泡的數(shù)據(jù)值。 例15-6 使用定時(shí)器使一個(gè)泡泡(橢圓)在屏幕中自動(dòng)移動(dòng),設(shè)置三級(jí)速度菜單,并使速度菜單的相應(yīng)選項(xiàng)前打鉤。 例15-7 七巧板第22頁(yè)/共25頁(yè)例15-7七巧板是我國(guó)民間流傳的一種拼圖游戲,制作簡(jiǎn)單但變化多端,具有很高的益智價(jià)值。七巧板制作非常簡(jiǎn)單,使用一張正方形的厚紙板按圖15-6所示圖樣裁開(kāi)即可。本程序在計(jì)算機(jī)上模擬使用七巧板進(jìn)行拼圖 第23頁(yè)/共25頁(yè)上機(jī)練習(xí)題 制作簡(jiǎn)單編輯器:重載鍵盤(pán)消息,接收用戶(hù)字符輸入并在客戶(hù)區(qū)顯示。要求可保存輸入字符并序列化。 為例

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論