版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
linteOSW
馬洪兵
1
★4
Windows應(yīng)用程序設(shè)方
?Win32API
?Windows應(yīng)用程序設(shè)計(jì)模式
?Windows應(yīng)用程序的基本結(jié)構(gòu)
?結(jié)構(gòu)化異常處理
?動態(tài)鏈接庫
Win32API★4
?Windows應(yīng)用程序總是在常規(guī)的用戶態(tài)下運(yùn)行
■操作系統(tǒng)核心組件則對外界表現(xiàn)出中立的性質(zhì),它
們不實(shí)現(xiàn)用戶界面,甚至不提供編程接口,系統(tǒng)服務(wù)
調(diào)用對應(yīng)用程序而言是不公開的
?Windows操作系統(tǒng)依靠一組用戶態(tài)環(huán)境子系統(tǒng),作
為應(yīng)用程序與操作系統(tǒng)核心之間的接口
3
Win32API*
?Win32子系統(tǒng)是Windows2000/XP操作系統(tǒng)的固有的
子系統(tǒng),這個子系統(tǒng)能夠提供應(yīng)用程序運(yùn)行所需要的
窗口管理、圖形設(shè)備接口、媒體控制、內(nèi)存管理等各
項(xiàng)服務(wù)功能,這些功能以函數(shù)庫的形式組織在一起,
這就是Win32應(yīng)用程序編程接口,簡稱為Win32Api
?Win32子系統(tǒng)負(fù)責(zé)將API調(diào)用轉(zhuǎn)換成Windows操作系
統(tǒng)的系統(tǒng)服務(wù)調(diào)用
?對于應(yīng)用程序開發(fā)人員而言,他所看到的Windows操
作系統(tǒng)實(shí)際上就是Win32API,操作系統(tǒng)的其他部分
對他來說是完全透明的。
Win32API
Windows應(yīng)用程序與操作系統(tǒng)的關(guān)系
5
Win32API
?USER32.DLL:負(fù)責(zé)處理用戶接口
?GDI32.DLL:負(fù)責(zé)在圖形設(shè)備上執(zhí)行繪圖操作
?KERNEL32.DLL:操作系統(tǒng)核心功能服務(wù)
?COMCTL32.DLL:通用控件庫
?COMDLG32.DLL:公共對話框
?SHELL32.DLL:用戶界面外殼
?DIBENG.DLL:圖形引擎
?NETAPI32.DLL:網(wǎng)絡(luò)
6
Win32API
標(biāo)準(zhǔn)Win32API函數(shù)分類:
?系統(tǒng)服務(wù)
?通用控件庫
■圖形設(shè)備接口
?網(wǎng)絡(luò)服務(wù)
?用戶接口
?系統(tǒng)Shell
?Windows系統(tǒng)信息
7
■窗口
目的是保證用戶能夠同時(shí)訪問大多數(shù)應(yīng)用程序
應(yīng)用程序使用窗口來顯示輸出或接收用戶的輸入
2、應(yīng)用程序只有通過窗口才能訪問系統(tǒng)顯示器;并且
苣仁,通過使用窗口與其他應(yīng)用程序共享系統(tǒng)顯示器
8
?事件驅(qū)動
Windows應(yīng)用程序的執(zhí)行順序取決于事件發(fā)生的順
序,描述事件發(fā)生的信息稱為消息,而事件驅(qū)動程
序設(shè)計(jì)則是圍繞著消息的產(chǎn)生與處理而展開的。
波方夕
消息可以分為由硬件設(shè)備產(chǎn)生的輸入消息和來自
容矽Windows系統(tǒng)的窗口管理消息
發(fā)送消息---send
指派消息---post
9
物Windows應(yīng)用程序設(shè)計(jì)模式
?事件驅(qū)動
硬件輸入
10
?Windows應(yīng)用程序的開發(fā)流程
Windows應(yīng)用程序分為程序代碼和用戶界面資源
兩部分,兩部分通過資源編譯器組合為一個完整
的EXE文件
將用戶界面資源一類的靜態(tài)數(shù)據(jù)與程序代碼相分
離有如下一些優(yōu)點(diǎn):
叱減少內(nèi)存要求;
,劃清了程序員與用戶界面設(shè)計(jì)人員的任
務(wù)分工;
a用戶界面風(fēng)格的變化可以不必修改程序
代碼或只需進(jìn)行少量的修改。
Windows應(yīng)用程序設(shè)計(jì)植
?Windows應(yīng)用程序的開發(fā)流程
工具
文本文件
二進(jìn)制文件12
A
1/Windows應(yīng)用程序的基
Windows應(yīng)用程序具有相對固定的基本結(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語
言中的main函數(shù)
京,WinMain函數(shù)主要由四部分組成
■?
?!?夕注冊窗口類
2若。?個典口
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ù)也稱為窗口過程,負(fù)責(zé)從Windows接收消
息,并根據(jù)這些消息完成特定的操作
窗口函數(shù)是一個回調(diào)函數(shù),由Windows系統(tǒng)調(diào)用,
應(yīng)用程序并不會直接調(diào)用它的窗口函數(shù)
窗口函數(shù)的主體是由一系列case語句組成的消
受用息處理程序段
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)用戶關(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)底層提供了一種稱為結(jié)構(gòu)化異常處理
SEH的系統(tǒng)機(jī)制。利用SEH可以把程序主要的工作同
錯誤處理分離開來,這樣的分離,可以使程序員集中
精力關(guān)注程序要完成的任務(wù),而將可能發(fā)生的錯誤放
在后面處理。
異常是在應(yīng)用程序的正常執(zhí)行過程中發(fā)生的不正常事
件。CPU引發(fā)的異常稱為硬件異常,操作系統(tǒng)和應(yīng)用
程序直接引發(fā)的異常,稱為軟件異常
結(jié)構(gòu)化異常處理張先4
SHE是操作系統(tǒng)的一種系統(tǒng)機(jī)制,與特定的程序
設(shè)計(jì)語言無關(guān)。
應(yīng)用程序要利用系統(tǒng)提供的SHE機(jī)制,則必須借
助于特定程序設(shè)計(jì)語言的相關(guān)語法。
因此,SEH不但涉及操作系統(tǒng),而且與編譯器有
密切的關(guān)系。
結(jié)構(gòu)化異常處理包括異常處理和終止處理兩個方面
22
結(jié)構(gòu)化異常處理**卷
?異常處理
try
F
...//guardeds一ction
)
一xc一pt(一xc一ptionfilt一r)
F
...//exceptionhandl一r
23
結(jié)構(gòu)化異常處理張先4
?異常處理
異常過濾器返回如下三個異常標(biāo)識符之一
^ECXEPTIONEXECUTEHANDLER
eECXEPTI0N1C0NTINUgEXECUTION
^ECXEPTIONZCONTINUEZSEARCH
24
結(jié)構(gòu)化異常處理張先4
?終止處理
Windows應(yīng)用程序在運(yùn)行時(shí)通常要分配資源,使
用這些資源,然后釋放它們。
由于異常改變了控制的流程,因此很容易導(dǎo)致無
法釋放在產(chǎn)生異常的代碼塊中分配的資源。
使用終止處理程序可以保證進(jìn)行這樣的清除工作
結(jié)構(gòu)化異常處理
?終止處理
try
廠
???
}
finally
???
}
26
結(jié)構(gòu)化異常處理張先4
?終止處理
有兩種情況可能使受保護(hù)段不正常地結(jié)束:
它在try塊中執(zhí)行了return、goto、break或
continue等控制語句
行在try塊中發(fā)生異常
27
結(jié)構(gòu)化異常處理張先4
■軟件異常
當(dāng)一個函數(shù)執(zhí)行失敗時(shí),習(xí)慣上要返回一些特
殊的值來,函數(shù)的調(diào)用者可以檢查這些特殊值
并采取一種替代的動作
如果這個調(diào)用者是被另一個調(diào)用者調(diào)用的函數(shù)
,那么它還需要將它自己的失敗代碼返回給它
的調(diào)用者
這種錯誤代碼的逐層傳遞會使源程序變得非常
難于編寫和維護(hù)
采用軟件異常則可以解決這些問題
28
動態(tài)鏈接庫*決斗
動態(tài)鏈接庫DLL是一個可執(zhí)行程序模塊,模塊中包
含了可以被其他應(yīng)用程序或其他DLL共享的程序代
碼和資源
采用DLL的優(yōu)點(diǎn):
,當(dāng)多個進(jìn)程同時(shí)使用同一個DLL時(shí),只要在內(nèi)
存中裝入它的一個副本即可,從而可以節(jié)省內(nèi)存;
eDLL與調(diào)用它的應(yīng)用程序相分離,因此可以在
不修改應(yīng)用程序的情況下對DLL進(jìn)行更新;
,只要在調(diào)用DLL中的函數(shù)時(shí)遵循相同的調(diào)用規(guī)
范,那么DLL中的函數(shù)就可以被各種編程語言編
制的應(yīng)用程序調(diào)用
29
動態(tài)鏈接庫
?DLL到進(jìn)程地址空間的映射
裝入時(shí)刻動態(tài)鏈接
動態(tài)
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辭職合同范本(2篇)
- 電力拆除工程合同模板
- 鑄造配件合同模板
- 遷墳合同模板
- 房品房合同模板
- 社區(qū)防疫物資儲備合同模板
- 農(nóng)業(yè)公司運(yùn)輸合同模板
- 工程車租賃服務(wù)合同模板
- 生鮮商品配送購銷合同模板
- 訴訟資產(chǎn)轉(zhuǎn)讓合同模板
- 訴訟材料接收表
- 五星級酒店前廳部工作流程綱要圖
- 交管12123學(xué)法減分試題題庫及答案
- 小學(xué)數(shù)學(xué)北師大三年級上冊四乘與除《需要多少錢》導(dǎo)學(xué)單3上
- 侵害集體經(jīng)濟(jì)組織成員權(quán)益糾紛民事答辯狀(范文)
- 小兒腹瀉PPT精品課件
- 保健知識漫談腦健康
- 思想道德與法治全冊教案
- 三年級上冊美術(shù)課件第6課 墨點(diǎn)的趣味|滬教版
- Q∕SY 05357-2020 油氣管道地面標(biāo)識設(shè)置規(guī)范
- (新版)護(hù)士資格-第2章 循環(huán)系統(tǒng)疾病病人的護(hù)理-考試題庫
評論
0/150
提交評論