




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
linteOSW
馬洪兵
1
★4
Windows應(yīng)用程序設(shè)方
?Win32API
?Windows應(yīng)用程序設(shè)計(jì)模式
?Windows應(yīng)用程序的基本結(jié)構(gòu)
?結(jié)構(gòu)化異常處理
?動(dòng)態(tài)鏈接庫(kù)
Win32API★4
?Windows應(yīng)用程序總是在常規(guī)的用戶(hù)態(tài)下運(yùn)行
■操作系統(tǒng)核心組件則對(duì)外界表現(xiàn)出中立的性質(zhì),它
們不實(shí)現(xiàn)用戶(hù)界面,甚至不提供編程接口,系統(tǒng)服務(wù)
調(diào)用對(duì)應(yīng)用程序而言是不公開(kāi)的
?Windows操作系統(tǒng)依靠一組用戶(hù)態(tài)環(huán)境子系統(tǒng),作
為應(yīng)用程序與操作系統(tǒng)核心之間的接口
3
Win32API*
?Win32子系統(tǒng)是Windows2000/XP操作系統(tǒng)的固有的
子系統(tǒng),這個(gè)子系統(tǒng)能夠提供應(yīng)用程序運(yùn)行所需要的
窗口管理、圖形設(shè)備接口、媒體控制、內(nèi)存管理等各
項(xiàng)服務(wù)功能,這些功能以函數(shù)庫(kù)的形式組織在一起,
這就是Win32應(yīng)用程序編程接口,簡(jiǎn)稱(chēng)為Win32Api
?Win32子系統(tǒng)負(fù)責(zé)將API調(diào)用轉(zhuǎn)換成Windows操作系
統(tǒng)的系統(tǒng)服務(wù)調(diào)用
?對(duì)于應(yīng)用程序開(kāi)發(fā)人員而言,他所看到的Windows操
作系統(tǒng)實(shí)際上就是Win32API,操作系統(tǒng)的其他部分
對(duì)他來(lái)說(shuō)是完全透明的。
Win32API
Windows應(yīng)用程序與操作系統(tǒng)的關(guān)系
5
Win32API
?USER32.DLL:負(fù)責(zé)處理用戶(hù)接口
?GDI32.DLL:負(fù)責(zé)在圖形設(shè)備上執(zhí)行繪圖操作
?KERNEL32.DLL:操作系統(tǒng)核心功能服務(wù)
?COMCTL32.DLL:通用控件庫(kù)
?COMDLG32.DLL:公共對(duì)話(huà)框
?SHELL32.DLL:用戶(hù)界面外殼
?DIBENG.DLL:圖形引擎
?NETAPI32.DLL:網(wǎng)絡(luò)
6
Win32API
標(biāo)準(zhǔn)Win32API函數(shù)分類(lèi):
?系統(tǒng)服務(wù)
?通用控件庫(kù)
■圖形設(shè)備接口
?網(wǎng)絡(luò)服務(wù)
?用戶(hù)接口
?系統(tǒng)Shell
?Windows系統(tǒng)信息
7
■窗口
目的是保證用戶(hù)能夠同時(shí)訪問(wèn)大多數(shù)應(yīng)用程序
應(yīng)用程序使用窗口來(lái)顯示輸出或接收用戶(hù)的輸入
2、應(yīng)用程序只有通過(guò)窗口才能訪問(wèn)系統(tǒng)顯示器;并且
苣仁,通過(guò)使用窗口與其他應(yīng)用程序共享系統(tǒng)顯示器
8
?事件驅(qū)動(dòng)
Windows應(yīng)用程序的執(zhí)行順序取決于事件發(fā)生的順
序,描述事件發(fā)生的信息稱(chēng)為消息,而事件驅(qū)動(dòng)程
序設(shè)計(jì)則是圍繞著消息的產(chǎn)生與處理而展開(kāi)的。
波方夕
消息可以分為由硬件設(shè)備產(chǎn)生的輸入消息和來(lái)自
容矽Windows系統(tǒng)的窗口管理消息
發(fā)送消息---send
指派消息---post
9
物Windows應(yīng)用程序設(shè)計(jì)模式
?事件驅(qū)動(dòng)
硬件輸入
10
?Windows應(yīng)用程序的開(kāi)發(fā)流程
Windows應(yīng)用程序分為程序代碼和用戶(hù)界面資源
兩部分,兩部分通過(guò)資源編譯器組合為一個(gè)完整
的EXE文件
將用戶(hù)界面資源一類(lèi)的靜態(tài)數(shù)據(jù)與程序代碼相分
離有如下一些優(yōu)點(diǎn):
叱減少內(nèi)存要求;
,劃清了程序員與用戶(hù)界面設(shè)計(jì)人員的任
務(wù)分工;
a用戶(hù)界面風(fēng)格的變化可以不必修改程序
代碼或只需進(jìn)行少量的修改。
Windows應(yīng)用程序設(shè)計(jì)植
?Windows應(yīng)用程序的開(kāi)發(fā)流程
工具
文本文件
二進(jìn)制文件12
A
1/Windows應(yīng)用程序的基
Windows應(yīng)用程序具有相對(duì)固定的基本結(jié)構(gòu),
入口點(diǎn)函數(shù)WinMain和窗口函數(shù)構(gòu)成了
音aWindows應(yīng)用程序的基本框架。
13
<O
5V7..揄函數(shù)
dWinMain函數(shù)是程序的入口點(diǎn),相當(dāng)于標(biāo)準(zhǔn)C語(yǔ)
言中的main函數(shù)
京,WinMain函數(shù)主要由四部分組成
■?
?!?夕注冊(cè)窗口類(lèi)
2若。?個(gè)典口
O,建立消息循環(huán)
超
W
14
M7
?WinMain函數(shù)----->消息循環(huán)
勃Windows并不直接把輸入消息發(fā)送給應(yīng)用程序,
而是將其送入應(yīng)用程序的消息隊(duì)列之中。止匕外,
SWindows和其他應(yīng)用程序也可以將消息指派到應(yīng)
用程序隊(duì)列中。
應(yīng)用程序必須讀取應(yīng)用程序隊(duì)列,檢索消息并將
泗它們發(fā)送出去,以便適當(dāng)?shù)拇翱诤瘮?shù)能夠處理它
O—們,負(fù)責(zé)這一任務(wù)的便是消息循環(huán)。
迪
15
?WinMain函數(shù)>消息循環(huán)
whil一(G一tM一ssag一(&Msg,NULL,0,0))
Translat一M一ssag一(&Msg);
DispatchM一ssag一(&Msg);
)
GetMessage函數(shù)檢索到WM_QUIT消息時(shí)返回非零
值,檢索到其他消息均返向KULL。
16
■窗口函數(shù)
窗口函數(shù)也稱(chēng)為窗口過(guò)程,負(fù)責(zé)從Windows接收消
息,并根據(jù)這些消息完成特定的操作
窗口函數(shù)是一個(gè)回調(diào)函數(shù),由Windows系統(tǒng)調(diào)用,
應(yīng)用程序并不會(huì)直接調(diào)用它的窗口函數(shù)
窗口函數(shù)的主體是由一系列case語(yǔ)句組成的消
受用息處理程序段
O—
如果窗口函數(shù)不處理某些消息,則必須把它們
蚪傳給DefWindowProc函數(shù)
17
Windows應(yīng)用程序的基本結(jié)
V/indows系統(tǒng)
指沈的消息發(fā)送的消息
WM.KEYDOWNWM_CREATE1
WM_KEYUPWM_DESTROY
WM_M0USEMOVEWM_SIJE3
WM_LBUTTONDOWNWM_PAINT
WM_QUIT
j①
DcfWindowProc()
應(yīng)用程序的
一消息隊(duì)列
檢留到
的相j息
③
J(iI
GelMessage()⑤
②
y
應(yīng)用程序
WinMain()
DispatchMessage()
④
回調(diào)
WndProc()
1case1
1casc2
case3
⑥
1DefauIt______________
18
1Windows應(yīng)用程序的基本結(jié)
nH當(dāng)用戶(hù)關(guān)閉窗口時(shí),Windows系統(tǒng)將把
WM_DESTROY消息發(fā)送給該窗口的窗口函數(shù),
在這I中情況下,窗口函數(shù)應(yīng)該使用
PostQuitMessage函數(shù)將WM_QUIT消息發(fā)送到
s應(yīng)用程序隊(duì)列中,這樣可以使GetMessage函數(shù)
檢索到WM_QUIT消息,從而結(jié)束消息循環(huán),
泗退出應(yīng)用程序。
O—
迪
19
Windows應(yīng)用程序的基本結(jié)
20
結(jié)構(gòu)化異常處理張先4
Windows在系統(tǒng)底層提供了一種稱(chēng)為結(jié)構(gòu)化異常處理
SEH的系統(tǒng)機(jī)制。利用SEH可以把程序主要的工作同
錯(cuò)誤處理分離開(kāi)來(lái),這樣的分離,可以使程序員集中
精力關(guān)注程序要完成的任務(wù),而將可能發(fā)生的錯(cuò)誤放
在后面處理。
異常是在應(yīng)用程序的正常執(zhí)行過(guò)程中發(fā)生的不正常事
件。CPU引發(fā)的異常稱(chēng)為硬件異常,操作系統(tǒng)和應(yīng)用
程序直接引發(fā)的異常,稱(chēng)為軟件異常
結(jié)構(gòu)化異常處理張先4
SHE是操作系統(tǒng)的一種系統(tǒng)機(jī)制,與特定的程序
設(shè)計(jì)語(yǔ)言無(wú)關(guān)。
應(yīng)用程序要利用系統(tǒng)提供的SHE機(jī)制,則必須借
助于特定程序設(shè)計(jì)語(yǔ)言的相關(guān)語(yǔ)法。
因此,SEH不但涉及操作系統(tǒng),而且與編譯器有
密切的關(guān)系。
結(jié)構(gòu)化異常處理包括異常處理和終止處理兩個(gè)方面
22
結(jié)構(gòu)化異常處理**卷
?異常處理
try
F
...//guardeds一ction
)
一xc一pt(一xc一ptionfilt一r)
F
...//exceptionhandl一r
23
結(jié)構(gòu)化異常處理張先4
?異常處理
異常過(guò)濾器返回如下三個(gè)異常標(biāo)識(shí)符之一
^ECXEPTIONEXECUTEHANDLER
eECXEPTI0N1C0NTINUgEXECUTION
^ECXEPTIONZCONTINUEZSEARCH
24
結(jié)構(gòu)化異常處理張先4
?終止處理
Windows應(yīng)用程序在運(yùn)行時(shí)通常要分配資源,使
用這些資源,然后釋放它們。
由于異常改變了控制的流程,因此很容易導(dǎo)致無(wú)
法釋放在產(chǎn)生異常的代碼塊中分配的資源。
使用終止處理程序可以保證進(jìn)行這樣的清除工作
結(jié)構(gòu)化異常處理
?終止處理
try
廠
???
}
finally
???
}
26
結(jié)構(gòu)化異常處理張先4
?終止處理
有兩種情況可能使受保護(hù)段不正常地結(jié)束:
它在try塊中執(zhí)行了return、goto、break或
continue等控制語(yǔ)句
行在try塊中發(fā)生異常
27
結(jié)構(gòu)化異常處理張先4
■軟件異常
當(dāng)一個(gè)函數(shù)執(zhí)行失敗時(shí),習(xí)慣上要返回一些特
殊的值來(lái),函數(shù)的調(diào)用者可以檢查這些特殊值
并采取一種替代的動(dòng)作
如果這個(gè)調(diào)用者是被另一個(gè)調(diào)用者調(diào)用的函數(shù)
,那么它還需要將它自己的失敗代碼返回給它
的調(diào)用者
這種錯(cuò)誤代碼的逐層傳遞會(huì)使源程序變得非常
難于編寫(xiě)和維護(hù)
采用軟件異常則可以解決這些問(wèn)題
28
動(dòng)態(tài)鏈接庫(kù)*決斗
動(dòng)態(tài)鏈接庫(kù)DLL是一個(gè)可執(zhí)行程序模塊,模塊中包
含了可以被其他應(yīng)用程序或其他DLL共享的程序代
碼和資源
采用DLL的優(yōu)點(diǎn):
,當(dāng)多個(gè)進(jìn)程同時(shí)使用同一個(gè)DLL時(shí),只要在內(nèi)
存中裝入它的一個(gè)副本即可,從而可以節(jié)省內(nèi)存;
eDLL與調(diào)用它的應(yīng)用程序相分離,因此可以在
不修改應(yīng)用程序的情況下對(duì)DLL進(jìn)行更新;
,只要在調(diào)用DLL中的函數(shù)時(shí)遵循相同的調(diào)用規(guī)
范,那么DLL中的函數(shù)就可以被各種編程語(yǔ)言編
制的應(yīng)用程序調(diào)用
29
動(dòng)態(tài)鏈接庫(kù)
?DLL到進(jìn)程地址空間的映射
裝入時(shí)刻動(dòng)態(tài)鏈接
動(dòng)態(tài)
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 法律服務(wù)行業(yè)法律顧問(wèn)服務(wù)協(xié)議
- 產(chǎn)業(yè)園物業(yè)服務(wù)合同
- 古詩(shī)文登高解讀與教學(xué)方案設(shè)計(jì)
- 個(gè)人權(quán)益保護(hù)網(wǎng)絡(luò)平臺(tái)使用協(xié)議
- 企業(yè)級(jí)網(wǎng)絡(luò)安全預(yù)防預(yù)案
- 裝修工程擔(dān)保合同
- 《宋代書(shū)法欣賞:大學(xué)書(shū)法藝術(shù)課程教案》
- 在線(xiàn)教育行業(yè)分析模擬試題集
- 股權(quán)擔(dān)保協(xié)議書(shū)規(guī)范
- 企業(yè)社會(huì)責(zé)任年度演講致辭草稿
- 2024-2025年第一學(xué)期小學(xué)德育工作總結(jié):點(diǎn)亮德育燈塔引領(lǐng)小學(xué)生全面成長(zhǎng)的逐夢(mèng)之旅
- 2024解析:第二章聲現(xiàn)象-基礎(chǔ)練(解析版)
- 整體法蘭強(qiáng)度校核計(jì)算表(設(shè)計(jì):zxg)
- 《供配電技術(shù)》課件第1章
- 建筑垃圾清理及運(yùn)輸方案
- 2024年甘肅省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 2024版Visio入門(mén)到精通完整教程
- 2024年團(tuán)??荚嚾雸F(tuán)考試題庫(kù)及答案
- 西鐵城手表H149機(jī)芯中文使用說(shuō)明書(shū)
- 2024年執(zhí)業(yè)藥師繼續(xù)教育專(zhuān)業(yè)答案
- 非ST段抬高型急性冠脈綜合征診斷和治療指南(2024)解讀
評(píng)論
0/150
提交評(píng)論