多媒體編程基礎(chǔ)_2_第1頁
多媒體編程基礎(chǔ)_2_第2頁
多媒體編程基礎(chǔ)_2_第3頁
多媒體編程基礎(chǔ)_2_第4頁
多媒體編程基礎(chǔ)_2_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微軟提供的Microsoft Visual Studio 2010集成開發(fā)環(huán)境 (IDE,Integrated Development Environmen)是比較流行的開發(fā)工具,它在前期產(chǎn)品Visual Studio 2010的基礎(chǔ)之上進(jìn)行了全面升級,它是面向Windows 7、Office 2010、Web 3.0的開發(fā)工具。Visual Studio 2010環(huán)境中集成了Visual C+,Visual C#、Visual Basic等常用軟件。創(chuàng)建應(yīng)用程序 簡單了解VC2010的用法, 使用VC2010創(chuàng)建 使用VC2010創(chuàng)建 使用VC2010創(chuàng)建托管C+非 Unicode 環(huán)境 (

2、Code Once,Run Anywhere)。)。 由兩個主要因素組成:CLR(the Common Language Runtime)公共語言運(yùn)行庫和FCL(Framework Class Library).NET Framework類庫。程序在CLR中運(yùn)行。FCL則提供了程序所需的功能,而不管是用何種語言開發(fā)的程序。一種是用符合ISO/ANSI語言標(biāo)準(zhǔn)開發(fā)的,此類程序稱為程序;一種是在,此類程序成為程序。.NET Framework嚴(yán)格地說不是VC+ 2008的一部分,而是Windows操作系統(tǒng)的一部分,它使得運(yùn)行程序和Web變得很簡單。公共語言運(yùn)行庫是一個運(yùn)行用高級語言編寫程序的標(biāo)準(zhǔn)環(huán)

3、境,高級語言包括Visual Basic,C#和C+。ECMA(歐洲計(jì)算機(jī)制造商,European Computer Manufactures)把作為CLI(通用語言基礎(chǔ)結(jié)構(gòu),Common Language Infrastructure)、ECMA-335的標(biāo)準(zhǔn)。同樣,CLR也被選為ISO/IEC23171的標(biāo)準(zhǔn)。所以,這就是為什么C+為CLR制定了CLI,并且CLI編譯器可以在其他操作系統(tǒng)上運(yùn)行的原因。,虛擬機(jī)可以使運(yùn)用高級語言編寫的軟件在不同的系統(tǒng)環(huán)境中不用改變和重新編譯程序而生成目標(biāo)代碼。用高級語言編寫的代碼在進(jìn)行編譯時CLI為虛擬機(jī)定義了一些中間語言的標(biāo)準(zhǔn)。生成的中間語言稱為MSIL(

4、Microsoft Intermediate Language)。在運(yùn)行軟件時,中間代碼被JIT(just-in-time)編譯成最終的機(jī)器代碼。中間代碼可以在任何有CLI的平臺上運(yùn)行。CLR是僅有的一個運(yùn)行在Windows平臺下的CLI平臺,當(dāng)然在其他操作系統(tǒng)和硬件上也有其他CLI平臺。雖然CLI和CLR不同,但是有時這兩個平臺在運(yùn)用時可以相互交換。CLI是一個標(biāo)準(zhǔn)的定義,而CLR則是CLI在微軟平臺下的實(shí)現(xiàn)。使用C+/CLI 例:利用向?qū)?chuàng)建基于CLR的“Windows窗體應(yīng)用程序” 運(yùn)行時可以看出,標(biāo)題欄的圖標(biāo)不再是MFC的了,因?yàn)樗呀?jīng)是一個CLR程序。 再看代碼: FCL是一套以支持

5、Web標(biāo)準(zhǔn)和應(yīng)用為主的、易用的、高度可擴(kuò)展的類庫。該類庫是面向?qū)ο蟮?,并提供用戶自己的托管代碼,可以從中導(dǎo)出功能的類型。FCL包括BCL(Basic Class Library),Data,XML類,以及用于Web Services、Web Forms、Windows Forms類。 .NET框架的FCL統(tǒng)一了應(yīng)用程序的開發(fā)模式,通過提供一致的功能,任何程序語言和開發(fā)模式都可以使用一致的API。 FCL以命名空間(Namespace)和類(Class)分層組織,并提供了統(tǒng)一的類型系統(tǒng)(Unified Type System),還提供了面向組件的類庫(Component Oriented)、屬性

6、、方法、事件及屬性信息。正如圖所示,Windows 內(nèi)核分為三層,與硬件直接打交道的這一層稱為硬件抽象層(Hardware Abstraction Layer,簡稱HAL),這一層的用意是把所有與硬件相關(guān)聯(lián)的代碼邏輯隔離到一個專門的模塊中,從而使上面的層次盡可能做到獨(dú)立于硬件平臺。HAL之上是內(nèi)核層,有時候也稱為微內(nèi)核(micro-kernel),這一層包含了基本的操作系統(tǒng)原語和功能,如線程和進(jìn)程、線程調(diào)度、中斷和異常的處理、同步對象和各種同步機(jī)制。在內(nèi)核層之上則是執(zhí)行體(executive)層,這一層的目的是提供一些可供上層應(yīng)用程序或內(nèi)核驅(qū)動程序直接調(diào)用的功能和語義。Windows 內(nèi)核的執(zhí)

7、行體包含一個對象管理器,用于一致地管理執(zhí)行體中的對象。執(zhí)行體層和內(nèi)核層位于同一個二進(jìn)制模塊中,即內(nèi)核基本模塊,其名稱為ntoskrnl.exe。內(nèi)核層和執(zhí)行體層的分工是,內(nèi)核層實(shí)現(xiàn)操作系統(tǒng)的基本機(jī)制,而所有的策略決定則留給執(zhí)行體。執(zhí)行體中的對象絕大多數(shù)封裝了一個或者多個內(nèi)核對象,并且通過某種方式(比如對象句柄)暴露給應(yīng)用程序。這種設(shè)計(jì)體現(xiàn)了機(jī)制與策略分離的思想。圖2.3 顯示了Windows 內(nèi)核的詳細(xì)組成結(jié)構(gòu)。Windows 內(nèi)核為用戶模式代碼提供了一組系統(tǒng)服務(wù),供應(yīng)用程序使用內(nèi)核中的功能。應(yīng)用程序通常并不直接調(diào)用這些系統(tǒng)服務(wù),而是通過一組系統(tǒng)DLL,最終通過ntdll.dll 切換到內(nèi)核模

8、式下的執(zhí)行體API 函數(shù)中,以調(diào)用內(nèi)核中的系統(tǒng)服務(wù)。Ntdll.dll 是連接用戶模式代碼和內(nèi)核模式系統(tǒng)服務(wù)的橋梁。對于內(nèi)核提供的每一個系統(tǒng)服務(wù),該DLL 都提供一個相應(yīng)的存根函數(shù),這些存根函數(shù)的名稱以“Nt”作為前綴,例如NtCreateProcess、NtOpenFile和NtSetTimer。另外,ntdll.dll 還提供了許多系統(tǒng)級的支持函數(shù),比如映像加載器函數(shù)(以“Ldr”為前綴)、Windows 子系統(tǒng)進(jìn)程通信函數(shù)(以“Csr”為前綴)、調(diào)試函數(shù)(以“Dbg”為前綴)、系統(tǒng)事件函數(shù)(以“Etw”為前綴),以及一般的運(yùn)行支持函數(shù)(以“Rtl”為前綴)和字符串支持函數(shù)等。執(zhí)行體API

9、 函數(shù)接收的參數(shù)來自于各種應(yīng)用程序,因此,為了確保系統(tǒng)的健壯性,以及抵抗來自用戶模式的惡意攻擊,所有的執(zhí)行體API 函數(shù)必須保證參數(shù)的有效性。這意味著它們必須在恰當(dāng)?shù)臅r刻檢查參數(shù)的值,若是指針的話,還必須保證調(diào)用者可以訪問指針?biāo)傅膬?nèi)存。通常,執(zhí)行體系統(tǒng)服務(wù)函數(shù)會在其開始處,對所接收的參數(shù)逐一探查它們的可訪問性。 面向?qū)ο蟮奶匦?窗口,句柄 消息,消息循環(huán) Debug,Release MFC框架(Dlg成員生命周期,堆、棧) 消息映射 對話框、控件、菜單、工具欄、狀態(tài)欄(子窗口)函數(shù)的重載在文檔/視圖結(jié)構(gòu)的應(yīng)用程序中,當(dāng)用戶單擊某個菜單項(xiàng)時, 程序會先執(zhí)行模板對象的OnCmdMsg方法;然后執(zhí)

10、行框架的OnCmdMsg方法。框架的OnCmdMsg方法代碼如下 :BOOL CFrameWnd:OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) CPushRoutingFrame push(this); CView* pView = GetActiveView(); if (pView != NULL & pView-OnCmdMsg(nID, nCode, pExtra, pHandlerInfo) return TRUE; if (CWnd:OnCmdMsg(nID, nCode, pEx

溫馨提示

  • 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

提交評論