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

正文內(nèi)容

第12章:基于文檔/視圖結(jié)構(gòu)的程序-資料下載頁(yè)

2025-08-01 15:23本頁(yè)面
  

【正文】 ? short CCarManageDoc::GetCarCount() ? { return ()。 ? //取對(duì)象數(shù)組的大小 , 對(duì)象數(shù)組是動(dòng)態(tài)調(diào)整的 , 其數(shù)組的大小就是當(dāng)前元素的個(gè)數(shù) ? } Visual C++ 數(shù)據(jù)存盤(pán) —— 文檔數(shù)據(jù)序列化 ? 1. 序列化的實(shí)現(xiàn) ? MFC的應(yīng)用程序架構(gòu)提供了數(shù)據(jù)序列化的方式來(lái)處理磁盤(pán)的存盤(pán)與打開(kāi) , 序列化的大部分工作靠應(yīng)用程序框架來(lái)完成 , 我們所要做的就是重載文檔類(lèi)的序列化函數(shù)Serialize()。 ? 由于文檔類(lèi) CCarManageDoc的祖先類(lèi)也是 CObject, 因此要想使文檔中的數(shù)據(jù) ( 對(duì)象數(shù)組 m_oaCars) 要想實(shí)現(xiàn)持久化 , 也是通過(guò)類(lèi)的序列化函數(shù) Serialize()來(lái)實(shí)現(xiàn)的 ,下面是該函數(shù)的實(shí)現(xiàn) 。 void CCarManageDoc::Serialize(CArchiveamp。 ar) {(ar)。 /*調(diào)用對(duì)象數(shù)組 CObArray的序列化函數(shù)來(lái)完成,對(duì)象數(shù)組又調(diào)用該數(shù)組中的元素CCar對(duì)象的序列化函數(shù)來(lái)完成,而 CCAr的序列化函數(shù)在前面已經(jīng)講了 */ if (()) {// 普通成員變量的存盤(pán),因?yàn)樵撐臋n沒(méi)有普通成員變量,所以它不起作用 } else { // 普通成員變量的讀取 } } Visual C++ —— 文檔數(shù)據(jù)序列化(續(xù)) ? 2. 文檔類(lèi)序列化的局限 ? 序列化機(jī)制這種保存數(shù)據(jù)的方法適合大多數(shù)的情況 , 特被是那些數(shù)據(jù)量不是特別大 , 而且需要一次性全部讀入或?qū)懗龅那闆r 。 ? 另外 序列化只能順序讀寫(xiě)文件 , 不能進(jìn)行隨機(jī)操作 , 只能操作二進(jìn)制文件 , 不能處理文本文件 , 不能操作數(shù)據(jù)庫(kù)文件 , 不能共享式操作文件等 。 出現(xiàn)上述情況時(shí) , 文檔類(lèi)的超載函數(shù)必須加以改變 , 需要通過(guò) CFile而不是 CArchive來(lái)存取文件 。 CFile提供了文件打開(kāi) 、 讀 、 寫(xiě) 、 關(guān)閉和移動(dòng)文件指針的函數(shù) 。 在文檔類(lèi)的 Serializa()函數(shù)中 , 應(yīng)用程序框架已經(jīng)打開(kāi)了文件 , 可以使用 CArchive的成員函數(shù) GetFile()獲取指向 CFile對(duì)象的指針 。 另外 , 還有一個(gè)復(fù)雜但靈活的方法是超載應(yīng)用程序類(lèi) CWinApp的函數(shù) 。 Visual C++ 視圖及其派生類(lèi) 在視圖中繪圖 用戶(hù)與視圖進(jìn)行交互 視圖 —— 顯示文檔數(shù)據(jù),提供用戶(hù)接口 Visual C++ 視圖及其派生類(lèi) ? 1. 視圖定義 ? 視圖是數(shù)據(jù)的用戶(hù)窗口 , 為用戶(hù)提供了文檔可視的數(shù)據(jù)顯示 , 它把文檔的部分或全部?jī)?nèi)容在窗口中顯示出來(lái) 。 視圖還給用戶(hù)提供了一個(gè)與文檔中的數(shù)據(jù)交互界面 , 它把用戶(hù)的輸入轉(zhuǎn)化為對(duì)文檔中數(shù)據(jù)的操作 。 ? 2. 視圖類(lèi) CView ? 視圖類(lèi) CView為用戶(hù)定義的視圖類(lèi)提供了基本的功能 , 它被連接到文檔上 , 用作文檔和用戶(hù)之間的媒介 。 視圖是框架窗口的子窗口 。 ? 視圖類(lèi) CView是 MFC中負(fù)責(zé)管理視圖窗口的基類(lèi) , 其它視圖類(lèi)都由此派生 。CView的主要功能是顯示和修改文檔的數(shù)據(jù) , 它對(duì)文檔數(shù)據(jù)的存儲(chǔ)沒(méi)有支持 ? 從基類(lèi) CView派生了如下常用的視圖類(lèi): ( 1) CScrollView。 滾動(dòng)視類(lèi);( 2) CEditView。 編輯視圖類(lèi);( 3)CFormView。 一種可以滾動(dòng)的視圖,其中包括了對(duì)話(huà)框控件;( 4)CHtmlView。 該類(lèi)提供了 Web瀏覽器的功能。 視圖類(lèi) CView的主要操作由 表 。 Visual C++ 表 CView類(lèi)的主要成員函數(shù) 成員函數(shù) 功能說(shuō)明 GetDocument 返回與視圖相連接的文檔 OnlnitialUpdate 在一個(gè)視圖第一次與文檔連接的時(shí)候調(diào)用 OnActivateView 當(dāng)一個(gè)視圖被激活時(shí)調(diào)用 OnDraw 調(diào)用它畫(huà)出文檔的圖象 , 用于屏幕顯示 , 打印或打印預(yù)覽 。 該函數(shù)一般需要程序員提供其實(shí)現(xiàn) OnPrint 打印或預(yù)覽文檔的一頁(yè) OnUpdate 調(diào)用這個(gè)函數(shù)以通知一個(gè)視圖 , 文檔已經(jīng)被修改 Visual C++ 在視圖中繪圖 ? 在基于文檔 /視圖結(jié)構(gòu)的應(yīng)用程序中 , 屏幕上所有的顯示都是 “ 畫(huà) ” 出來(lái)的 , 而幾乎所有的 “ 畫(huà) ” 動(dòng)作都是靠視圖類(lèi)的 OnDraw()函數(shù)來(lái)實(shí)現(xiàn) , 該函數(shù)主要完成 兩個(gè)功能 : 1.調(diào)用文檔對(duì)象的成員函數(shù) GetDocument()獲取與該視圖所關(guān)聯(lián)的文檔的指針。 2.調(diào)用 CDC的成員函數(shù)進(jìn)行繪圖操作,以 “ 畫(huà) ”出文檔數(shù)據(jù)。 Visual C++ 用戶(hù)與視圖進(jìn)行交互 ? 視圖提供了用戶(hù)與文檔中的數(shù)據(jù)交互的手段和工具。 用戶(hù)通過(guò)擊鍵、菜單選擇、工具欄按鈕選取、鼠標(biāo)的按下、松開(kāi)、移動(dòng)等輸入操作,經(jīng)過(guò) Windows系統(tǒng)轉(zhuǎn)化為一般的窗口消息(來(lái)自鼠標(biāo)和鍵盤(pán)消息)和命令消息(來(lái)自菜單、工具欄和加速鍵),視圖通過(guò)處理這些消息,來(lái)獲取用戶(hù)的操作信息,解釋用戶(hù)操作的意義,實(shí)現(xiàn)用戶(hù)的意圖。 ? 由于汽車(chē)管理程序要通過(guò)錄入界面得到每一輛車(chē)的信息 , 因而要設(shè)計(jì)一個(gè)對(duì)話(huà)框?qū)崿F(xiàn)輸入的界面 。 ? 在對(duì)話(huà)框資源中增加一個(gè) ID號(hào)為 IDD_DIALOG_CAR對(duì)話(huà)框資源模板 , 如 圖 。 該界面中的控件的屬性如 表 。 Visual C++ 圖 Visual C++ 表 控件類(lèi)型 屬性 值 對(duì)應(yīng)成員變量 靜態(tài)文本控件 ID IDC_STATIC Caption 車(chē)牌號(hào) 成組框 ID IDC_STATIC Caption 車(chē)基本信息 編輯框控件 ID IDC_EDIT_CARNUMBER CString m_CarNumber ID IDC_EDIT_CARTYPE CString m_CarType ID IDC_EDIT_COLOR CString m_Color ID IDC_EDIT_MAXSPEED Short m_MaxSpeed 按鈕控件 ID IDOK Caption 確定 ID IDCANCEL Caption 取消 Visual C++ 用戶(hù)與視圖進(jìn)行交互 (續(xù)) ? 對(duì)話(huà)框建立好后 , 通過(guò)類(lèi)向?qū)г俳⒁粋€(gè)與該對(duì)話(huà)框資源 IDD_DIALOG_CAR所關(guān)聯(lián)的對(duì)話(huà)框類(lèi) CCarDlg。 ? 2. 輸入對(duì)話(huà)框的調(diào)用 ? 在工具欄資源 IDR_MAINFRAME中增加一個(gè) ID號(hào)為ID_BUTTON_CAR的按鈕,如 圖 。再利用CalssWizard在視圖類(lèi) CCarManageView中增加它對(duì)COMMAND消息的響應(yīng)函數(shù) OnButtonCar() 。 Visual C++ 圖 在工具欄資源 IDR_MAINFRAME增加按鈕 Visual C++ OnButtonCar()函數(shù) ? void CCarManageView::OnButtonCar() ? //對(duì)工具欄中的按鈕 ID_BUTTON_CAR的消息響應(yīng)函數(shù) ? { // TODO: Add your mand handler code here ? CCarManageDoc* pDoc = GetDocument()。 //取與視圖所關(guān)聯(lián)的文檔 ? ASSERT_VALID(pDoc)。 ? CCarDlg MyCarDlg。 //聲明輸入汽車(chē)信息對(duì)話(huà)框變量 MyCarDlg ? if(()==IDOK) //如果點(diǎn)擊確定的化 ? { (,olor, )。 /*將話(huà)框中所輸入的汽車(chē)信息保存到視圖類(lèi)的成員變量 m_Car中 , SetCarValues為 CCar的成員函數(shù) */ ? pDocAddCar(m_Car)。 ? //將新增的汽車(chē) m_Car通過(guò)調(diào)用文檔類(lèi)的成員函數(shù) AddCar增加到文檔類(lèi)的對(duì)象數(shù)組m_oaCars中 ? Invalidate()。//屏幕刷新,發(fā)送 WM_PAINT消息,引發(fā) OnDraw的執(zhí)行 } ? } Visual C++ 習(xí) 題 一 、 名詞解釋 1. 文檔模板 2. 視圖 3. 框架 4. 持久化 5. 序列化 二 、 簡(jiǎn)單題 1. MFC中都有哪些從 CView派生出來(lái)的視圖類(lèi) ? 他們都用在什么地方 。 2. 拿 Word字處理程序的運(yùn)行界面來(lái)說(shuō) , 它是一個(gè)典型的多文檔模板 、一個(gè)模板多個(gè)文檔 、 一個(gè)文檔多個(gè)視圖的應(yīng)用程序 。 請(qǐng)寫(xiě)出其界面中所對(duì)應(yīng)的是 MFC中的哪些類(lèi) ? 3. 從 CObject派生的類(lèi)可以實(shí)現(xiàn)序列化 , 一個(gè)類(lèi)要實(shí)現(xiàn)序列化都有哪些操作步驟 ? 每一步的含義是什么 ? 三 、 實(shí)驗(yàn)題 1. 模仿本章實(shí)例 , 建立一個(gè)基于文檔 /視圖結(jié)構(gòu)的應(yīng)用程序 , 它能實(shí)現(xiàn)簡(jiǎn)單的學(xué)生成績(jī)管理 。 它有三個(gè)對(duì)話(huà)框 , 分別實(shí)現(xiàn)學(xué)生信息錄入 、課程信息錄入和學(xué)生考試信息錄入 。 2. 在上述程序基礎(chǔ)上,實(shí)現(xiàn)輸入數(shù)據(jù)的持久化處理。完后上機(jī)調(diào)試。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1