freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

visualc程序設計與應用教程(下)ppt(編輯修改稿)

2025-03-20 22:53 本頁面
 

【文章內(nèi)容簡介】 至少改寫專門負責顯示數(shù)據(jù)的 OnDraw()函數(shù)或 OnPrint()函數(shù) 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 62 class CLi2_1View : public CView //派生出一個屬于自己的視圖類 { protected: // create from serialization only CLi2_1View()。 DECLARE_DYNCREATE(CLi2_1View) public: CLi2_1Doc* GetDocument()。 //得到與之相關聯(lián)的文檔對象的指針 public: virtual void OnDraw(CDC* pDC)。 // 負責顯示數(shù)據(jù)的 OnDraw()函數(shù) virtual BOOL PreCreateWindow(CREATESTRUCTamp。 cs)。 protected: virtual BOOL OnPreparePrinting(CPrintInfo* pInfo)。 virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)。 virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)。 public: virtual ~CLi2_1View()。 …… }; Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 63 CView類和它的 9個派生類封裝了視圖的各種不同的功能 , 它們?yōu)橛脩魧崿F(xiàn)最新的 Windows特性提供了很大的便利 。 這些派生視圖類也可以作為用戶程序中視圖類的基類 , 而將這些視圖類設置為基類的最基本的方法是在 MFC APPWizard創(chuàng)建 SDI/MDI的第 6步中進行基類的選擇 。 這些視圖類如下表所示 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 64 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 65 Frame窗口負責文檔與視圖的界面管理 , 當Frame窗口關閉時 , 在其中的視圖也被自動刪除 。下圖說明了文檔 、 視圖 、 框架窗口之間的關系 。 3. 框架 (Frame) 窗口 一個視圖只能擁有一個文檔,但一個文檔可以同時擁有多個視圖。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 66 (Document Template) 文檔模板定義了文檔 、 視圖和框架窗口這 3個類的關系 。 MFC提供了一個文檔模板類 CDocTemplate支持文檔模板 。 文檔模板類是一個抽象的基類 , 它定義了文檔模板的基本處理函數(shù)接口 。 由于它是一個抽象基類 , 因此不能直接用它來定義對象而必需用它的派生類 。 對一個單文檔界面程序 , 使用 CSingleDocTemplate類 , 而對于一個多文檔界面程序 , 使用 CMultipleDocTemplate類 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 67 5. 文檔 /視圖結構的產(chǎn)生 一般在應用程序的初始化函數(shù) InitInstance()中創(chuàng)建一個和多個文檔模板 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 68 BOOL CLi2_1App::InitInstance() { …… CSingleDocTemplate* pDocTemplate。 pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CLi2_1Doc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CLi2_1View))。 AddDocTemplate(pDocTemplate)。 …… } Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 69 文檔 /視圖結構的創(chuàng)建過程如下圖所示。 CMai n Fra me CL i 2 _ 1 V i ew 如果是【 Fi l e / O p e n 】 【 Fi l e / N ew 】 【 Fi l e / O p e n 】 CW i n A p p 選擇適當?shù)?D o c u men t T em p l at e 構造 D o cu me n t 對象 構造 Frame 窗口對象 產(chǎn)生 Frame 窗口 讀文件 將 V i ew 窗口初始化 在 V i ew 中顯示資料 產(chǎn)生 V i ew 窗口 構造 V i ew 對象 CL i 2 _ 1 D o c Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 70 文檔與視圖之間的相互作用 文檔與視圖的交互是通過類的公有成員變量和成員函數(shù)實現(xiàn)的 。 1. 視圖類 CView的成員函數(shù) GetDocument() 一個視圖對象只有一個與之相關聯(lián)的文檔對象 。在 MFC應用程序中 , 視圖對象通過調(diào)用成員函數(shù)GetDocument()得到與之相關聯(lián)的文檔對象的指針 ,利用這個指針就可以訪問文檔類及其派生類的公有數(shù)據(jù)成員和成員函數(shù) 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 71 2. CDocument類的成員函數(shù) UpdateAllViews() 一個文檔對象可以有多個與之相關聯(lián)的視圖對象 , 但一個文檔對象只反映當前視圖的變化 。當一個文檔數(shù)據(jù)通過某個視圖被修改后 , 與它關聯(lián)的每一個視圖都必須反映出這種修改 。 因此 ,視圖在需要時必須進行重繪 , 即當文檔數(shù)據(jù)發(fā)生改變時 , 必須通知所有相關聯(lián)的視圖對象 , 以便更新所顯示的數(shù)據(jù) 。 更新與該文檔有關的所有視圖的方法是調(diào)用成員函數(shù)CDocument::UpdateAllViews()。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 72 3. 視圖類的成員函數(shù) OnUpdate() 當應用程序調(diào)用 CDocument::UpdateAllViews()函數(shù)時 , 實際上是調(diào)用了所有相關視圖的 OnUpdate()函數(shù) , 以更新相關的視圖 。 需要時 , 可以直接在視圖派生類的成員函數(shù)中調(diào)用該函數(shù)刷新當前視圖 。 另外 ,在初始化視圖成員函數(shù) CView::OnInitialUpdate()中也調(diào)用了 OnUpdate()函數(shù) 。 刷 新 視 圖 時 默 認 的 函 數(shù) 調(diào) 用 過 程 是 :Cdocument::UpdateAllViews()→CView ::OnUpdate() →CWnd ::Invalidate()→OnPaint()→OnDraw() 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 73 4. CView類的 OnInitialUpdate()函數(shù) 當應用程序被啟動 , 或用戶從 “ 文件 ” 菜單中選擇了 “ 新建 ” 或 “ 打開 ” 命令時 , CView 的OnInitialUpdate()函數(shù)會被調(diào)用 , 該函數(shù)是虛函數(shù) 。 還可以利用派生類的 OnInitialUpdate()函數(shù)對視圖對象進行初始化 。 當應用程序啟動后 , 應用程序框架在調(diào)用了 OnCreate()函數(shù)后 (如果對 OnCreate()函數(shù)進行了映射 ), 會立即調(diào)用 OnInitialUpdate()函數(shù) 。OnCreate()函數(shù)只能被調(diào)用一次 , 而 OnInitialUpdate()函數(shù)則可以被調(diào)用多次 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 74 使用文檔/視圖結構的意義 磁盤文件等永久存儲介質 文檔對象 指向文檔對象的指針 視對象 指向文檔對象的指針 通過文檔類的成員函數(shù),如 Se r i al i z e 等 通過 視類的 G e t D o c u men t 成員函數(shù)獲取指向文檔對象指針 通過 指針調(diào)用文檔類的成員函數(shù)從文檔中讀取數(shù)據(jù) 通過 視類的成員函數(shù)將從文檔對象中得到的數(shù)據(jù)顯示到計算機屏幕上,在視圖類中為鍵盤或鼠標消息添加處理函數(shù),從而獲得用戶的輸入 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 75 文檔/視圖結構帶來的好處主要有: ? 首先是將數(shù)據(jù)操作和數(shù)據(jù)顯示、用戶界面分離開 ? MFC在文檔 /視圖結構上提供了許多標準操作界面,包括新建文件、打開文件、保存文件、打印等,減輕了用戶的工作量 ? 支持打印預覽和電子郵件發(fā)送功能 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 76 簡單的文檔 /視圖結構應用程序 一般的,類的數(shù)據(jù)成員的初始化都是在構造函數(shù)中完成的,在構造函數(shù)調(diào)用結束時對象才真正存在。但對于文檔來說卻不同,文檔類的數(shù)據(jù)成員初始化工作是在 OnNewDocument()成員函數(shù)中完成的。 文檔中數(shù)據(jù)的初始化 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 77 文檔中數(shù)據(jù)的清理 同文檔的初始化類似,文檔的清理也不是在文檔的析構函數(shù)中完成,而是在文檔的 DeleteContents()成員函數(shù)中完成的。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 78 簡單的文檔 /視圖結構應用程序 【 例 】 編寫一個單文檔的應用程序 Mydraw,程序運行后,當用戶在客戶區(qū)窗口按下鼠標左鍵時,以鼠標所在位置為圓心繪圓。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 79 編譯、鏈接并運行程序。在視圖窗口中單擊鼠標左鍵,就可以鼠標所在位置為圓心繪圓。 繪制的圖形符合題目要求,但當改變窗口大小或將窗口最小化后再重新打開,原來的圓沒有顯示出來。其原因是此時調(diào)用的是視圖類的刷新函數(shù) OnDraw(),而在該函數(shù)中并沒有實現(xiàn)繪圓功能。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 80 為了避免上述情況的發(fā)生 , 必須在 OnDraw()函數(shù)中重繪以前單擊鼠標所繪制的圓 , 因此需要將鼠標單擊時的坐標數(shù)據(jù)保存起來 。 下面的例 100的points數(shù)組來保存圓心坐標數(shù)據(jù) 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 81 【 例 】 完善例 Mydraw, 在重繪窗口時能夠顯示已繪制的圓 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 82 集合類的使用 通常使用簡單的數(shù)組或鏈表來存儲集合數(shù)據(jù) 。 MFC提供了相應的集合類 , 來實現(xiàn)數(shù)組 、 列表和映象操作 。 ?數(shù)組類類似于標準的 C數(shù)組 , 允許使用下標訪問和操作數(shù)組元素 , MFC數(shù)組類還可在需要時 , 動態(tài)地縮減和增加數(shù)組所需的內(nèi)存空間 。 ?列表類就是一個有序元素列表 , 提供用于在任意地方插入和刪除節(jié)點 , 向前 、 向后遍歷元素的功能 。 ?映象類是使用關鍵字進行訪問的對象的集合 , 類似于字典的組織方式 , 通過使用哈希 (hashing)技術來使映象值與關鍵字配對 , 能實現(xiàn)對項目的快速訪問 。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 83 MFC提供了兩種集合類 : ?基于模板的集合類 由這些集合類可以創(chuàng)建任何類型的數(shù)組、列表和映象。為了使用這些類,必須在程序中包含頭文件“ ”。 ?非模板集合類 MFC提供了許多預定義的類,分別用來實現(xiàn)特定類型的數(shù)組、列表和映象。 Visual C++程序設計與應用教程 2022/3/13 第 5章 對話框 84 各個模板集合類的使用方法與對應的數(shù)組類 、 鏈表類 、 映射類的使用方法相同 , 只需在定義具體的數(shù)組類對象或鏈表類對象 、 映射類對象時給模板實例化 , 指定
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1