windows編程復(fù)習(xí)綱要課件



《windows編程復(fù)習(xí)綱要課件》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《windows編程復(fù)習(xí)綱要課件(48頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、,Fundamentals of Computers,*,*,制作:劉曉翔,JINAN University,暨南大學(xué)電氣信息學(xué)院,Windows,編程,Fundamentals of Computers,制作:劉曉翔,JINAN University,暨南大學(xué)電氣信息學(xué)院,Windows,編程,*,*,Fundamentals of Computers,暨南大學(xué)電氣信息學(xué)院,Windows,編程,*,制作:劉曉翔,2024/11/14,1,前言,什么是,Windows API,?,有過(guò)編程經(jīng)驗(yàn)的讀者都應(yīng)該知道,在傳統(tǒng)應(yīng)用程序中要完成某個(gè)功能,都是以,函數(shù)調(diào)用,的形式實(shí)現(xiàn)的,同樣,,Windo
2、ws,應(yīng)用程序也是以函數(shù)調(diào)用的方式來(lái)通知操作系統(tǒng)執(zhí)行相應(yīng)的功能的。,操作系統(tǒng)所能夠完成的每一個(gè)特殊功能通常都有一個(gè)函數(shù)與其對(duì)應(yīng),也就是說(shuō),操作系統(tǒng)把它所能夠完成的功能以函數(shù)的形式提供給應(yīng)用程序使用,應(yīng)用程序?qū)@些函數(shù)的調(diào)用就叫做系統(tǒng)調(diào)用,這些函數(shù)的集合就是,Windows,操作系統(tǒng)提供給應(yīng)用程序編程的接口,(Application Programming Interface),,簡(jiǎn)稱(chēng),Windows API,。,如,CreateWindow,就是一個(gè),API,函數(shù),應(yīng)用程序中調(diào)用這個(gè)函數(shù),操作系統(tǒng)就會(huì)按照該函數(shù)提供的參數(shù)信息產(chǎn)生一個(gè)相應(yīng)的窗口。這些,API,函數(shù)都在,windows.h,中聲明
3、。,2023/9/211前言 什么是 Windows API?,2024/11/14,2,什么是,MFC,?,MFC,英文全稱(chēng)為,Microsoft Foundation Classes,(微軟基礎(chǔ)類(lèi)庫(kù)),是把,Windows API,進(jìn)行封裝的類(lèi)庫(kù),它是一個(gè)類(lèi)的集合,通過(guò)覆蓋,Windows API,,為編程提供了一個(gè),面向?qū)ο?的界面。,MFC,使,Windows,程序員能夠利用,C+,面象對(duì)象的特性進(jìn)行編程。,前言,2023/9/212什么是 MFC?MFC,2024/11/14,3,為什么要使用,MFC,?,可重用性,封裝后使方法和屬性更緊密的捆綁,常用的功能自動(dòng)化,減少編寫(xiě)代碼的數(shù)量
4、,提供應(yīng)用程序的框架結(jié)構(gòu),框架結(jié)構(gòu)提供了抽象功能,它遠(yuǎn)遠(yuǎn)超出了,Windows API,的功能。例如:,MFC,的文檔,/,視圖體系結(jié)構(gòu)在,API,上建造了一個(gè)功能強(qiáng)大的基礎(chǔ)結(jié)構(gòu),它把程序中數(shù)據(jù)的圖形表示(或成為視圖)與數(shù)據(jù)本身分開(kāi)。這種抽象對(duì),API,而言完全是陌生的,而且在,MFC,框架結(jié)構(gòu)之外或類(lèi)似的類(lèi)庫(kù)中也不存在。,前言,2023/9/213為什么要使用MFC?可重用性前言,2024/11/14,4,Windows,程序內(nèi)部運(yùn)行機(jī)制,Windows,編程模型,事件驅(qū)動(dòng)編程模型,以消息為基礎(chǔ),事件驅(qū)動(dòng)之,WM_PAINT,WM_KEYDOWN,WM_LBUTTONDOWN,消息響應(yīng),消息
5、響應(yīng),消息響應(yīng),DefWindowProc,來(lái)源于操作系統(tǒng)的消,息,消,息隊(duì)列,WinMain,消息循環(huán),發(fā)送消息,窗口過(guò)程,未處理的消息,應(yīng)用程序,窗口,2023/9/214Windows 程序內(nèi)部運(yùn)行機(jī)制Wind,2024/11/14,5,Windows,程序內(nèi)部運(yùn)行機(jī)制,小小知識(shí)點(diǎn),“,句柄”,句柄(,HANDLE,),資源的標(biāo)識(shí)。,操作系統(tǒng)要管理和操作這些資源,都是通過(guò)句柄來(lái)找到對(duì)應(yīng)的資源。按資源的類(lèi)型,又可將句柄細(xì)分成圖標(biāo)句柄(,HICON,),光標(biāo)句柄(,HCURSOR,),窗口句柄(,HWND,),應(yīng)用程序?qū)嵗浔?HINSTANCE,)等等各種類(lèi)型的句柄。操作系統(tǒng)給每一個(gè)窗口
6、指定的一個(gè)唯一的標(biāo)識(shí)號(hào)即窗口句柄。,2023/9/215Windows 程序內(nèi)部運(yùn)行機(jī)制小小知識(shí),2024/11/14,6,Windows,程序內(nèi)部運(yùn)行機(jī)制,編寫(xiě),Windows,應(yīng)用程序的要素,消息響應(yīng),消息響應(yīng),消息響應(yīng),DefWindowProc,WinMain,消息循環(huán),發(fā)送消息,窗口過(guò)程,未處理的消息,應(yīng)用程序,1,入口函數(shù),WinMain,2,創(chuàng)建窗口,3,發(fā)送消息與消息循環(huán),4,窗口過(guò)程與消息響應(yīng),消息,窗口,2023/9/216Windows 程序內(nèi)部運(yùn)行機(jī)制編寫(xiě)Wi,2024/11/14,7,窗口類(lèi)第二個(gè)成員變量,lpfnWndProc,指定了這一類(lèi)型窗口的過(guò)程函數(shù),也稱(chēng),回
7、調(diào)函數(shù),。,回調(diào)函數(shù)的原理是這樣的,當(dāng)應(yīng)用程序收到給某一窗口的消息時(shí)(還記得前面講過(guò)的消息通常與窗口相關(guān)的嗎?),就應(yīng)該調(diào)用某一函數(shù)來(lái)處理這條消息。這一,調(diào)用過(guò)程不用應(yīng)用程序自己來(lái)實(shí)施,而由操作系統(tǒng)來(lái)完成,,但是,回調(diào)函數(shù)本身的代碼必須由應(yīng)用程序自己完成。,對(duì)于一條消息,操作系統(tǒng)到底調(diào)用應(yīng)用程序中的哪個(gè)函數(shù)(回調(diào)函數(shù))來(lái)處理呢?操作系統(tǒng)調(diào)用的就是接受消息的窗口所屬的類(lèi)型中的,lpfnWndProc,成員指定的函數(shù)。每一種不同類(lèi)型的窗口都有自己專(zhuān)用的回調(diào)函數(shù),該函數(shù)就是通過(guò),lpfnWndProc,成員指定的。,Windows,程序內(nèi)部運(yùn)行機(jī)制,窗口過(guò)程函數(shù),2023/9/217 窗口類(lèi)第二個(gè)成
8、員變量lpfnWn,2024/11/14,8,Windows,程序內(nèi)部運(yùn)行機(jī)制,創(chuàng)建窗口,創(chuàng)建一個(gè)完整的窗口需要經(jīng)過(guò)下面四個(gè)操作步驟:,Step1:,設(shè)計(jì)一個(gè)窗口類(lèi);,Step2:,注冊(cè)窗口類(lèi);,Step3:,創(chuàng)建窗口;,Step4:,顯示及更新窗口。,2023/9/218Windows 程序內(nèi)部運(yùn)行機(jī)制創(chuàng)建窗口,2024/11/14,9,Windows,程序內(nèi)部運(yùn)行機(jī)制,WM_PAINT,Windows,把一個(gè)最小的需要重繪的正方形區(qū)域叫做,“無(wú)效區(qū)域”,。當(dāng),Windows,發(fā)現(xiàn)了一個(gè)“無(wú)效區(qū)域“后,它就會(huì)向該應(yīng)用程序發(fā)送一個(gè),WM_PAINT,消息,通知應(yīng)用程序重新繪制窗口。,當(dāng)窗口從無(wú)
9、到有、改變尺寸、最小化后再恢復(fù)、被其他窗口遮蓋后再顯示時(shí),窗口的客戶(hù)區(qū)都將變?yōu)闊o(wú)效。,那么,應(yīng)用程序是如何通知操作系統(tǒng)執(zhí)行某個(gè)功能的呢?,2023/9/219Windows 程序內(nèi)部運(yùn)行機(jī)制WM_P,2024/11/14,10,Windows,程序內(nèi)部運(yùn)行機(jī)制,自行發(fā)送消息的兩種方式,發(fā)送消息可以使用,SendMessage,和,PostMessage,函數(shù)。,SendMessage,將消息,直接發(fā)送給窗口,,并,調(diào)用該窗口過(guò)程,進(jìn)行處理。在窗口過(guò)程對(duì)消息處理完畢后,該函數(shù)才返回。,PostMessage,函數(shù),將消息放入,與創(chuàng)建窗口的線(xiàn)程相關(guān)聯(lián)的,消息隊(duì)列,后立即返回。,2023/9/211
10、0Windows 程序內(nèi)部運(yùn)行機(jī)制自行發(fā),2024/11/14,11,虛函數(shù)與多態(tài)性,當(dāng),C+,編譯器在編譯的時(shí)候,發(fā)現(xiàn)基類(lèi)的函數(shù)是虛函數(shù),這個(gè)時(shí)候,C+,就會(huì)采用遲綁定(,late binding,)的技術(shù),在運(yùn)行時(shí),依據(jù)對(duì)象的類(lèi)型(在示例程序中,我們傳遞的派生類(lèi)對(duì)象的地址)來(lái)確認(rèn)調(diào)用的哪一個(gè)函數(shù),這種能力就做,C+,的,多態(tài)性,。,在基類(lèi)的函數(shù)前加上,virtual,關(guān)鍵字,該函數(shù)則為,虛函數(shù),。虛函數(shù)派生下去仍為虛函數(shù),而且可以省略,virtual,關(guān)鍵字。,在派生類(lèi)中重寫(xiě)該函數(shù),,運(yùn)行時(shí)將會(huì)根據(jù)指針實(shí)際所指的對(duì)象的類(lèi)型來(lái)調(diào)用相應(yīng)的函數(shù),。如果對(duì)象類(lèi)型是派生類(lèi),就調(diào)用派生類(lèi)的函數(shù);如果對(duì)
11、象類(lèi)型是基類(lèi),就調(diào)用基類(lèi)的函數(shù)。,掌握,C+,2023/9/2111虛函數(shù)與多態(tài)性 當(dāng)C+編,2024/11/14,12,純虛函數(shù)與抽象類(lèi),純虛函數(shù),是指被標(biāo)明為不具體實(shí)現(xiàn)的虛函數(shù)。純虛函數(shù)可以讓類(lèi)先具有一個(gè)操作名稱(chēng),而沒(méi)有操作內(nèi)容,讓派生類(lèi)在繼承時(shí)再去具體地給出定義。凡是含有純虛函數(shù)的類(lèi)叫做,抽象類(lèi),。這種可不能實(shí)例化對(duì)象,只能作為基類(lèi)為派生類(lèi)服務(wù)。,注意:,派生類(lèi)中必須實(shí)現(xiàn)基類(lèi)的純虛函數(shù),否則,派生類(lèi)也變成了抽象類(lèi),不能實(shí)例化對(duì)象。,純虛函數(shù)多用在一些方法行為的實(shí)際上。在設(shè)計(jì)基類(lèi)時(shí),不太好確定或?qū)?lái)的行為多種多樣,而此行為又是必需的,我們就可以在基類(lèi)的設(shè)計(jì)中,以純虛函數(shù)來(lái)聲明次中行為,而不
12、具體實(shí)現(xiàn)它。,掌握,C+,2023/9/2112純虛函數(shù)與抽象類(lèi) 純虛函數(shù),2024/11/14,13,const,的使用方法,const,成員函數(shù),任何不會(huì)修改數(shù)據(jù)成員的函數(shù)都應(yīng)該聲明為,const,類(lèi)型,。如果在編寫(xiě),const,成員函數(shù)時(shí),不慎修改了數(shù)據(jù)成員,或者調(diào)用了其它非,const,成員函數(shù),編譯器將指出錯(cuò)誤,這無(wú)疑會(huì)提高程序的健壯性。,2023/9/2113const的使用方法const成員函數(shù),2024/11/14,14,類(lèi)中的,Static,成員變量與函數(shù),靜態(tài)成員函數(shù)與變量的特性,靜態(tài)成員函數(shù)和靜態(tài)成員變量屬于類(lèi)本身,在類(lèi)加載的時(shí)候(編譯階段),即為它們分配了空間,因此可以
13、通過(guò),類(lèi)名,:,函數(shù)名,或,類(lèi)名,:,變量名,來(lái)訪(fǎng)問(wèn)。,而非靜態(tài)函數(shù)和非靜態(tài)成員屬于對(duì)象的方法和數(shù)據(jù),也就是應(yīng)該首先產(chǎn)生類(lèi)的對(duì)象,然后通過(guò)類(lèi)的對(duì)象去引用。,靜態(tài)函數(shù)不屬于某個(gè)具體的對(duì)象,也就是說(shuō),在還沒(méi)有產(chǎn)生類(lèi)的任何一個(gè)具體對(duì)象時(shí),靜態(tài)函數(shù)就已經(jīng)存在于程序的代碼區(qū)了。但這是類(lèi)的非靜態(tài)成員還沒(méi)有分配內(nèi)存空間,這樣,在靜態(tài)成員函數(shù)中是沒(méi)有辦法對(duì)類(lèi)非靜態(tài)成員進(jìn)行操作的。因此,,在靜態(tài)成員函數(shù)中只能訪(fǎng)問(wèn)靜態(tài)成員變量,不能訪(fǎng)問(wèn)非靜態(tài)成員函數(shù)和非靜態(tài)成員變量,。非靜態(tài)成員函數(shù)中可以調(diào)用靜態(tài)成員函數(shù)。,2023/9/2114類(lèi)中的Static成員變量與函數(shù)靜態(tài)成,2024/11/14,15,MFC,框架程序
14、剖析,MFC,單文檔界面程序初探(簡(jiǎn)答題),test,.h,、,test.cpp,應(yīng)用程序類(lèi):,CTestApp,(由,CWinApp,繼承而來(lái)),每一個(gè),MFC,程序有且僅有一個(gè)主應(yīng)用程序類(lèi)對(duì)象,theApp,,它代表一個(gè)程序本體,用于管理和維護(hù)主應(yīng)用程序,MainFrm,.h,、,MainFrm,.cpp,主框架類(lèi),C,MainFrame,(由,CWnd,繼承而來(lái)),主框架是應(yīng)用程序的主體窗口,其他的窗口(如視類(lèi)窗口、工具條、狀態(tài)條)都依附于主框架窗口(覆蓋在它上面)。,2023/9/2115MFC框架程序剖析MFC單文檔界面程序,2024/11/14,16,MFC,框架程序剖析,MFC,
15、單文檔界面程序初探(續(xù)),testView.,h,、,testView.cpp,視圖類(lèi):,CTestView,(由,CWnd,繼承而來(lái)),負(fù)責(zé)管理和維護(hù)圖形顯示操作。,testDoc,.h,、,testDoc,.cpp,文檔類(lèi):,CTestDoc,(由,CDocumet,繼承而來(lái)),負(fù)責(zé)顯示數(shù)據(jù)的后臺(tái)管理和維護(hù)。,2023/9/2116MFC框架程序剖析MFC單文檔界面程序,2024/11/14,17,MFC,框架程序剖析,MFC,中的全局對(duì)象,theApp,初始化,CTestAPP,對(duì)象,應(yīng)用程序內(nèi)存獲得配置,調(diào)用基類(lèi),CWinApp,構(gòu)造函數(shù)(在,MFC,源碼目錄的文件中,AppCore.
16、cpp,),初始化完成程序運(yùn)行時(shí)的一些初始化工作。,注意:,由于,theApp,是個(gè)全局對(duì)象,,所以,CWinApp,構(gòu)造函數(shù)會(huì)在入口函數(shù),WinMain,之前運(yùn)行,。,2023/9/2117MFC框架程序剖析MFC中的全局對(duì)象t,2024/11/14,18,圖形操作,設(shè)備描述表,DC,在,Windows,平臺(tái)下,窗口的所有圖形操作都是利用,DC,來(lái)完成的。,如果使用,GetDC,來(lái)得到,DC,的句柄,在完成圖形操作后,必須調(diào)用,ReleaseDC,來(lái)釋放,DC,所占用的資源,以避免內(nèi)存泄漏。,利用計(jì)算機(jī)作圖,窗口相當(dāng)于畫(huà)布,因此,在獲取,DC,的句柄時(shí),總是和一個(gè)指定的窗口相關(guān)聯(lián)。,2023/9/2118圖形操作設(shè)備描述表DC在Windows,2024/11/14,19,簡(jiǎn)單繪圖,利用,CClientDC,、,CWindowDC,類(lèi)繪圖(簡(jiǎn)答題),CClientDC,派生于,CDC,類(lèi),并且在構(gòu)造時(shí)調(diào)用,GetDC,函數(shù),在析構(gòu)時(shí)調(diào)用,ReleaseDC,函數(shù)。它與,CDC,一樣,都是實(shí)現(xiàn)在窗口的,客戶(hù)區(qū),繪圖。,CWindowDC,派生于,CDC,類(lèi),并且在構(gòu)造時(shí)調(diào)用,GetWin
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 專(zhuān)題黨課講稿:以高質(zhì)量黨建保障國(guó)有企業(yè)高質(zhì)量發(fā)展
- 廉政黨課講稿材料:堅(jiān)決打好反腐敗斗爭(zhēng)攻堅(jiān)戰(zhàn)持久戰(zhàn)總體戰(zhàn)涵養(yǎng)風(fēng)清氣正的政治生態(tài)
- 在新錄用選調(diào)生公務(wù)員座談會(huì)上和基層單位調(diào)研座談會(huì)上的發(fā)言材料
- 總工會(huì)關(guān)于2025年維護(hù)勞動(dòng)領(lǐng)域政治安全的工作匯報(bào)材料
- 基層黨建工作交流研討會(huì)上的講話(huà)發(fā)言材料
- 糧食和物資儲(chǔ)備學(xué)習(xí)教育工作部署會(huì)上的講話(huà)發(fā)言材料
- 市工業(yè)園區(qū)、市直機(jī)關(guān)單位、市紀(jì)委監(jiān)委2025年工作計(jì)劃
- 檢察院政治部關(guān)于2025年工作計(jì)劃
- 辦公室主任2025年現(xiàn)實(shí)表現(xiàn)材料
- 2025年~村農(nóng)村保潔員規(guī)范管理工作方案
- 在深入貫徹中央8項(xiàng)規(guī)定精神學(xué)習(xí)教育工作部署會(huì)議上的講話(huà)發(fā)言材料4篇
- 開(kāi)展深入貫徹規(guī)定精神學(xué)習(xí)教育動(dòng)員部署會(huì)上的講話(huà)發(fā)言材料3篇
- 在司法黨組中心學(xué)習(xí)組學(xué)習(xí)會(huì)上的發(fā)言材料
- 國(guó)企黨委關(guān)于推動(dòng)基層黨建與生產(chǎn)經(jīng)營(yíng)深度融合工作情況的報(bào)告材料
- 副書(shū)記在2025年工作務(wù)虛會(huì)上的發(fā)言材料2篇
相關(guān)資源
更多