



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第2講 MFC程序框架及文檔視圖架構(gòu) 主要內(nèi)容 認識一個簡單的MFC程序 MFC程序開發(fā)流程與集成開發(fā)環(huán)境 MFC應(yīng)用程序框架 文檔視圖架構(gòu) 認識一個簡單的MFC程序 制作一個簡單的MFC程序 應(yīng)用AppWizard生成你的第1個MFC程序: MySDI SDI與MDI 編譯、運行之 瀏覽程序代碼與資源 集成開發(fā)環(huán)境-Visual C+ 6.0 IDE 各菜單功能 Workspace中的ClassView、ResourceView和 FileView 資源編輯器 Dialog Editor Menu Editor Accelerator Editor Toolbar Editor Versio
2、n Information Editor String Editor Graphice Editor 集成開發(fā)環(huán)境-Visual C+ 6.0 IDE ClassWizard 使MFC類庫的使用更簡單方便 實質(zhì)是有一個數(shù)據(jù)文件,每次打開IDE時讀取或 生成。 且僅用于MFC應(yīng)用程序編程 可以支持的工作有 MFC message maps Automation dispatch maps 對話框類的 DoDataExchange MFC程序開發(fā)流程 MFC應(yīng)用程序框架 Microsoft Foundation Class MFC類庫簡介:約250個類 MFC的主要特點: 是建立在Win32 AP
3、I之上的C+類庫,利用面向?qū)ο?的原理,組織起數(shù)以千計的API; 提供了基于Windows應(yīng)用程序設(shè)計的主要框架,使 程序設(shè)計過程更有效率,更符合面向?qū)ο蟮木?MFC并沒有封裝整個API,給了程序員很大的靈活 性。 1 The MFC Class Hierarchy CObject-Derived Classes Classes Not Derived from Cobject Global Afx Functions Application Architecture Classes User-Interface Classes General-Purpose Classes ActiveX
4、 Classes Database Classes Internet Classes Application Framework 什么是MFC應(yīng)用程序框架 提供了一般應(yīng)用程序需要的全部面向?qū)ο筌?件組件的集成集合。 好處 是C+的Windows API 標準結(jié)構(gòu)的專業(yè)化的程序,面向?qū)ο笏季S 運行速度快 降低編碼復(fù)雜性,代碼重用,良好工具支持 分析你已生成的SDI程序 深入理解MFC應(yīng)用程序 WinMain在哪?程序如何開始執(zhí)行? Window Procedure在哪?窗口如何運行? RegisterClass和CreateWindow在哪?窗口 如何創(chuàng)建? Message Loop ( Get
5、Message和 DispatchMessage 在哪?程序如何運轉(zhuǎn)? CWinApp-WinMain-程序啟動 程序啟動步驟 生成theApp對象 WinMain AfxWinMain CMySDIApp : : InitInstance 創(chuàng)建窗口對象 顯示并重繪窗口 執(zhí)行Run,并進入消息循環(huán) CWinApp-程序運行與結(jié)束 運行 在CWinApp : Run中的消息循環(huán)中執(zhí)行。消息處 理部分將詳細講解MFC消息的處理 結(jié)束 直到CWinApp : Run 收到 WM_QUIT消息,結(jié) 束消息循環(huán),調(diào)用CWinApp : ExitInstance函 數(shù),這是一個虛函數(shù),當在CMySDIAp
6、p中改寫了 ExitInstance函數(shù)時,則CWinApp : Run 調(diào)用 的就是CMySDIApp : ExitInstance 用Call Stack調(diào)試,觀察函數(shù)調(diào)用棧 2 CWinApp中可改寫的四個函數(shù) InitInstance Run ExitInstance OnIdle 空閑時間處理 當消息隊列空閑時,系統(tǒng)自動調(diào)用此函數(shù),通常在 CMySDIApp中改寫此函數(shù)完成后臺任務(wù)。 看MSDN例子 右擊CMySDIApp,選擇Add Virtual Function,雙擊OnIdle,擊OK。 拷貝MSDN中的代碼,運行之。(代碼見下一頁 TRACE宏用于格式化輸出,只在調(diào)試狀態(tài)能
7、用. BOOL bMore = CWinApp:OnIdle(lCount; if (lCount = 0 TRACE("App idle for short period of timen" bMore = TRUE; else if (lCount = 10 TRACE("App idle for longer amount of timen" bMore = TRUE; else if (lCount = 100 TRACE("App idle for even longer amount of timen" bMore = T
8、RUE; else if (lCount = 1000 TRACE("App idle for quite a long period of timen" return bMore; CFrameWnd-WndProc 創(chuàng)建窗口對象時調(diào)用了Create函數(shù),用于創(chuàng)建 窗口并與CFrameWnd的對象相關(guān)聯(lián),做初始 化,注冊等工作。 OnCreate函數(shù)在窗口創(chuàng)建之后,顯示之前被 調(diào)用。在CMainFrame中改寫這個函數(shù)用于初 始化你自己的窗口特征。 文檔視圖架構(gòu) 文檔視圖架構(gòu)是MFC應(yīng)用程序框架的核心 是MFC之所以成為應(yīng)用程序框架的關(guān)鍵 它將管理數(shù)據(jù)的程序代碼與與顯示數(shù)
9、據(jù)的程序 代碼分開 架構(gòu)中利用虛函數(shù)構(gòu)建了數(shù)據(jù)處理與顯示的框 架(對象之間的消息傳遞) 程序員只需在派生類中改寫它們,完成特定的 數(shù)據(jù)處理與顯示 文檔視圖架構(gòu)的思想 數(shù)據(jù)嵌入文檔中,利用文檔的架構(gòu)管理 文檔與視圖通信,使數(shù)據(jù)在視圖中顯示 視圖顯示數(shù)據(jù),并與用戶交互 視圖放入窗口中 文檔模板類對象管理上述對象協(xié)調(diào)工作 查看程序代碼 文檔視圖架構(gòu)中主要類 The CDocument Class The CView Class The CMainFrame Class The Document Template Class 3 文檔類 CDocument CDocument是負責管理數(shù)據(jù)的類,它的作
10、 用: 程序員應(yīng)將用戶的實際數(shù)據(jù)對象內(nèi)嵌在 CDocument中,利用框架的數(shù)據(jù)處理; 完成與CView類通信。 文檔類中重要的成員函數(shù) OnNewDocument (可改寫) OnOpenDocument (可改寫) DeleteContents (可改寫) Serialize(可改寫) GetFirstViewPosition GetNextView GetPathName GetTiTle IsModified SetModifiedFlag UpdateAllViews ,查看MSND,不需死記硬背,在實踐中逐步熟悉 在程序中實現(xiàn)CDocument的派生類,以便嵌 入數(shù)據(jù)對象,并改寫成
11、員函數(shù)實現(xiàn)對數(shù)據(jù)處 理。 視圖類 CView 視圖類是負責顯示CDocument中數(shù)據(jù)的類 必須從CView派生自己的類,并至少改寫成員函數(shù) OnDraw或OnPrint,實現(xiàn)數(shù)據(jù)顯示 框架自動調(diào)用OnDraw函數(shù) WM_PAINT消息 OnPaint( OnDraw( 處理與用戶的交互 視圖類中重要的成員函數(shù) GetDocument (可改寫) OnDraw (可改寫) OnInitialUpdate (可改寫) OnUpdate (可改寫) OnActivateView (可改寫) OnPrepareDC (可改寫) ,查看MSND 視圖類的派生類 窗口類CFrameWnd CDocume
12、nt和CView互為表里 CMainFrame 是容器 窗口 文檔 視圖 4 窗口類中重要的成員函數(shù) Create ActivateFrame InitialUpdateFrame GetActiveFrame SetActiveView GetActiveView CreateView GetActiveDocument EnableDocking OnCreateClient OnContextHelp ,查看MSND 文檔模板類 CDocTemplate 文檔模板類用來管理文檔對象、視圖對象、窗 口對象和應(yīng)用程序資源 文檔模板對象在應(yīng)用程序?qū)ο笾械膭?chuàng)建 文檔模板類對象分析 文檔視圖架構(gòu)的
13、產(chǎn)生 文檔模板類管理資源 資源ID:IDR_MAINFRAME 代表使用的資源:菜單,圖表,字符串等。 用n隔開的七個子串,描述文檔類型。可在 AppWizard第4步指定,或直接更改。 例:在視圖中顯示文檔數(shù)據(jù) 文檔數(shù)據(jù) 在C*Doc中加入一個CString變量str 在構(gòu)造函數(shù)中初始化 在視圖中顯示 在C*View類的OnDraw(函數(shù)中顯示數(shù)據(jù) CRect rect(0,0,700,700; pDC->DrawText(pDoc->str,&rect, DT_CENTER; 5 MFC 對象的使用 定義方法: 1. 定義 MFC 派生類、定義其屬性和成員函數(shù) 案例:航班查詢系統(tǒng) 定義用戶自己的數(shù)據(jù)類:Company類 將數(shù)據(jù)類對象嵌入到文檔類 class CL5_2Doc Company m_Com; ; 構(gòu)造方法: 1. 構(gòu)造 MFC 類對象或其派生類對象 2. 或調(diào)用其 Create 函數(shù),創(chuàng)建 Windows 對象 通信方法: 1. 調(diào)用 MFC 對象的成員函數(shù) 2. 響應(yīng)來自其他對象的消息傳遞 3. 向其他對象發(fā)送消息 修改構(gòu)造函數(shù) CMyDoc:CMyDoc( : m_Com(&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025山西煤化所招聘1人筆試參考題庫附帶答案詳解
- 汽車車載網(wǎng)絡(luò)控制技術(shù) 試題庫及答案 簡答題
- 2024年民宿旅游項目投資申請報告代可行性研究報告
- 2025年上半年宣恩園創(chuàng)產(chǎn)業(yè)投資限公司公開招聘工作人員【7人】易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年宜賓屏山縣就業(yè)服務(wù)管理局招考(30人)易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安陽市滑縣招考勞務(wù)派遣人員易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽馬鞍山市含山博物館招考1人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽長安責任保險股份限公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省馬鞍山師范高等??茖W校招聘編外聘用輔導員24人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年上半年安徽省歙縣事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案
- 教科版科學四年級下冊教師用書
- 娛樂主播如何轉(zhuǎn)型做帶貨主播
- 四川省德陽市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細及行政區(qū)劃代碼
- 青島版三年級數(shù)學下冊全套單元測試卷
- (參考)食品加工操作流程圖
- 2023高中物理步步高大一輪 第十章 第1講 磁場及其對電流的作用
- 空分設(shè)備安全培訓課件
- Adobe-Illustrator-(Ai)基礎(chǔ)教程
- 沒頭腦和不高興-竇桂梅.精選優(yōu)秀PPT課件
- 鋼棧橋計算書(excel版)
- 租賃合同審批表
評論
0/150
提交評論