Visual C++程序設(shè)計教程(第二版)課件:Microsoft類庫基礎(chǔ)_第1頁
Visual C++程序設(shè)計教程(第二版)課件:Microsoft類庫基礎(chǔ)_第2頁
Visual C++程序設(shè)計教程(第二版)課件:Microsoft類庫基礎(chǔ)_第3頁
Visual C++程序設(shè)計教程(第二版)課件:Microsoft類庫基礎(chǔ)_第4頁
Visual C++程序設(shè)計教程(第二版)課件:Microsoft類庫基礎(chǔ)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Microsoft類庫基礎(chǔ)

4.1Microsoft類庫概述

MFC(MicrosoftFoundationClass)類庫是VisualC++程序設(shè)計的核心,它封裝了許多常用的WindowsAPI函數(shù),絕大部分的VisualC++應(yīng)用程序都是在此基礎(chǔ)上構(gòu)成的。MFC具有以下特點:完全支持所有的Windows函數(shù)、控制、消息、GDI基本圖形函數(shù)、菜單以及對話框。使用與傳統(tǒng)的WindowsAPI同樣的命名規(guī)則,因此,一個類所能完成的工作可直接從名字得知。不使用容易產(chǎn)生錯誤的switch/case語句。所用的消息都映射到類中成員函數(shù),這種直接的消息到方法的映射對所有消息都適用。通過發(fā)送有關(guān)對象信息到文件的能力,來提供更好的判斷支持。也可以確認(rèn)成員變量。提供很多意外處理,減少錯誤。在運行時確定數(shù)據(jù)對象的設(shè)計,這允許實例化類時動態(tài)操作各域。代碼少,速度快。三大基類:

大多數(shù)MFC類是從三個基類(BaseClass)派生的:CObject、CCmdTarget和CWnd。4.2根類:CObject

CObject提供以下的基本服務(wù):支持序列化(serializationsupport)運行時(Run-time)類的信息對象診斷輸出(objectdiagnosticoutput)與容器類兼容(compatibilitywithcollectionclasses)4.3MFC應(yīng)用程序框架結(jié)構(gòu)類用于構(gòu)造框架應(yīng)用程序的結(jié)構(gòu);提供多數(shù)應(yīng)用程序公用的功能;組成框架的類對象組合成一個Windows應(yīng)用程序工作框架。主要的組成對象有:一個從類CWinApp派生出的應(yīng)用程序?qū)ο?;一個或多個從類CDocument派生出的文檔對象一個或多個從類CView派生出的視對象4.3.1CWinApp類

CWinApp類層次關(guān)系圖:4.3.2CDocument類

CDocument類層次關(guān)系:4.3.3CView類

CView類的層次關(guān)系:4.3.3CView類(續(xù))

視圖類負(fù)責(zé)顯示、描述、操作、編輯文檔類的內(nèi)容。CView中有個指針型的成員變量指向所依附的文檔CDocument,可以通過GetDocument獲得該指針,便于對文檔編輯。4.4MFC窗口類

類CWnd及其派生類封裝一個Windows窗口句柄HWND。CWnd:所有窗口的基類??墒褂孟旅娴呐缮?,或者直接從CWnd派生自己的類。CFrameWnd:SDI應(yīng)用程序主框架窗口的基類,也是其它框架窗口的基類。CMDIFrameWnd:MDI應(yīng)用程序主框架窗口的基類。CMDIChildWnd:MDI應(yīng)用程序文檔框架窗口的基類。CMinFrameWnd:浮動工具條最常見的最小框架窗口。COleIPFrameWnd:當(dāng)服務(wù)器文檔在編輯時為視提供一個框架窗口。4.5MFC異常類

MFC類庫提供了一個基于CException類的異常處理機(jī)制,CException類有很多派生類,分別使用于各種場合。4.5.1CMemoryException:(Out-of-memoryexception內(nèi)存不足異常)

內(nèi)存溢出時就會引發(fā)CMemoryException。尤其是當(dāng)new操作符分配內(nèi)存失敗時,這個異常就會產(chǎn)生。因為MFC用new操作符分配內(nèi)存,所以任何MFC內(nèi)存分配函數(shù)都會產(chǎn)生這個異常。4.5.2CNotSupportedException:(Requestforanunsupportedoperation)

MFC執(zhí)行幾個不被支持的函數(shù),當(dāng)用戶企圖調(diào)用這些函數(shù)時,就會產(chǎn)生CNotSupportedException異常。所以在自己的不被支持的函數(shù)中應(yīng)用該類也是很方便的。用戶也可以通過調(diào)用AfxThrowUnsupportException()發(fā)出未支持異常。4.5.3CArchiveException:(Archive-specificexception)

當(dāng)序列化操作出錯時,就會發(fā)出CArchiveException異常。CArchiveException異常類的成員函數(shù)m_cause保存了指明異常發(fā)出的原因值。4.5.4CFileException:(File-specificexception)

在CFile類和CStdioFile以及其他文件類中,進(jìn)行文件打開、關(guān)閉、讀、寫、指針移動等操作過程中,如果發(fā)送錯誤,一般會出現(xiàn)一個CFileException異常。4.5.5CResourceException:(Windowsresourcenotfoundornotcreatable)

當(dāng)Windows系統(tǒng)不能找到或不能定位所要求的資源時,就會發(fā)出CResourceException異常。在創(chuàng)建調(diào)入資源對象時,如對話框模板或位圖資源,或試圖分配GDI資源時,最有可能發(fā)出異常。4.6MFC文件類MFC文件類都是從CFile類中派生出來,CFile類提供了二進(jìn)制磁盤文件和無緩沖的文件接口。在任何MFC文件類中,都可以使用CFile類的成員函數(shù)。4.6.1打開和關(guān)閉文件

調(diào)用CFile::Open()打開文件調(diào)用CFile::Close()關(guān)閉文件4.6.2文件的讀寫

可以用CFile::Read()或CFile::Write()讀、寫指定的字節(jié)數(shù)。為了調(diào)整當(dāng)前位置,可以用SeekToBegin()或SeekToEnd()或更一般的CFile::Seek()函數(shù)4.6.3CStdioFile類

CStdioFile類提供了支持二進(jìn)制和文本的流式帶緩沖的文件。對于CStdioFile,也可以用CStdioFile::ReadLine(),或CStdioFile::WriteLine()成員函數(shù)一次讀寫一行。4.6.4CMemFile類

CMemFile類提供了基于內(nèi)存而不是磁盤的文件類。它用于創(chuàng)建內(nèi)存文件。當(dāng)創(chuàng)建時,文件被打開,所以不需要調(diào)用Open()。4.6.5CArchive類

CArchive類用來存儲二進(jìn)制數(shù)據(jù)流,廣泛地被應(yīng)用于對象的序列化,通常由MFC框架創(chuàng)建。當(dāng)創(chuàng)建一個CArchive對象時,必須傳遞一個指向CFile對象的指針以及為檔案(archive)指定一種模式,模式是CArchive::load或是CArchive::store。每一個CArchive必須與一個CFile相聯(lián)系,所以必須首先創(chuàng)建CFile。4.6.6CSocketFile類

CSocketFile類提供了基于Windows套接字類CSocket的文件類。MFC的CSocket類是由CAsyncSocket派生而來,為WinSockAPI提供了一個更高級別的接口,使用CSocketFile和CArchive類來簡化關(guān)于套接字?jǐn)?shù)據(jù)的輸入和輸出。4.7繪圖和打印類

MFC提供了與Windows的繪制工具相等價的繪圖工具類。繪圖工具類封裝了Windows的繪圖工具,MFC利用這些工具可以在設(shè)備環(huán)境中進(jìn)行繪圖。4.7.1設(shè)備環(huán)境類

CDC類派生四個類:客戶設(shè)備環(huán)境類CClientDC:用來方便地創(chuàng)建和破壞一個設(shè)備環(huán)境,窗口設(shè)備環(huán)境類CWindowDC:用來維護(hù)窗口的非客戶區(qū),如CClientDC維護(hù)客戶區(qū)一樣。繪圖設(shè)備環(huán)境類CPaintDC:在被構(gòu)造以獲得設(shè)備環(huán)境時調(diào)用CWnd::BeginPaint()。在這種情況下,設(shè)備環(huán)境只允許在已被無效化的窗口客戶區(qū)繪圖,而不能在整個客戶區(qū)繪圖。析構(gòu)時,CPaintDC類調(diào)用CWnd::EndPaint()函數(shù)。元文件設(shè)備環(huán)境類CMetaFileDC:用來創(chuàng)建一個Microsoft元文件。4.7.2圖形對象類

4.8ODBC類

MFC類庫中ODBC數(shù)據(jù)庫類主要有三個,即CDatabase類、CRecordset類和CRecordView類,分別完成不同的功能。4.8.1CDatabase類

CDatabase類封裝的是數(shù)據(jù)庫。主要的類成員函數(shù)有:Open和OpenEx:將CDatabase對象與一個ODBC數(shù)據(jù)源相連;Close:將CDatabase對象與ODBC數(shù)據(jù)源的連接關(guān)斷;GetDatabaseName:返回CDatabase對象與數(shù)據(jù)源相連的ODBC連接字符串;ExecuteSQL:執(zhí)行不返回記錄集的任意SQL語句。4.8.2CRecordset類

CRecordset類封裝了一個對某數(shù)據(jù)庫查詢和操作的記錄集。CRecordset類是MFCODBC數(shù)據(jù)庫中操作最多的類,它包含對記錄集進(jìn)行打開和關(guān)閉、對記錄集進(jìn)行增刪和修改、改變當(dāng)前記錄位置以及獲取當(dāng)前數(shù)據(jù)庫信息等許多操作。4.8.2CRecordset類(續(xù))

要使用應(yīng)用程序自己的CRecordset派生類,需先打開一個數(shù)據(jù)庫,并構(gòu)造一個記錄集對象,并向構(gòu)造函數(shù)指出此CDatabase的對象指針。對記錄集進(jìn)行和獲取信息的操作函數(shù)主要有:4.8.2CRecordset類(續(xù))Open:根據(jù)指定的條件和順序打開記錄集Close:關(guān)閉查詢記錄集,撤銷查詢;IsBOF:測試游標(biāo)是否滾動到記錄集第一條記錄之前;IsEOF:測試游標(biāo)是否滾動到記錄集最后一條記錄之后;IsDeleted:測試當(dāng)前記錄是否被刪除;GetRecordCount:返回該記錄集中行數(shù)(即記錄數(shù))4.8.2CRecordset類(續(xù))對記錄進(jìn)行修改和增刪的函數(shù)主要有:AddNew:創(chuàng)建一個空行以及存儲緩沖區(qū),將其中各列設(shè)置為所希望的值以后,調(diào)用Update函數(shù)可完成添加記錄的操作;Delete:刪除當(dāng)前行;Edit:把當(dāng)前記錄調(diào)入緩沖區(qū)供修改,修改后調(diào)用Update函數(shù)可更新此行記錄值;Update:將緩沖區(qū)中的值存儲到數(shù)據(jù)庫記錄中4.8.2CRecordset類(續(xù))改變當(dāng)前記錄位置的函數(shù)主要有:MoveFirst:光標(biāo)移動到第一個記錄;MoveLast:光標(biāo)移動到最后一個記錄;MovePrev:光標(biāo)向前移動一個記錄;MoveNext:光標(biāo)向后移

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論