Windows應(yīng)用程序編程入門.ppt_第1頁(yè)
Windows應(yīng)用程序編程入門.ppt_第2頁(yè)
Windows應(yīng)用程序編程入門.ppt_第3頁(yè)
Windows應(yīng)用程序編程入門.ppt_第4頁(yè)
Windows應(yīng)用程序編程入門.ppt_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Windows應(yīng)用程序設(shè)計(jì)入門,Windows編程技術(shù),2,書目推薦入門篇,Windows程序設(shè)計(jì)(上、下) Charles Petzold,3,書目推薦進(jìn)階篇,Windows核心編程 Jeffrey Richter,4,書目推薦進(jìn)階篇,Windows高級(jí)編程指南 Jeffrey Richter,5,書目推薦進(jìn)階篇,Programming Server-Side Applications for Windows 2000 Jeffrey Richter,6,操作系統(tǒng)的作用與功能,處理器管理:處理中斷、處理器調(diào)度、進(jìn)程間通信與同步 內(nèi)存管理:內(nèi)存分配、共享、地址轉(zhuǎn)換、保護(hù) 設(shè)備管理:設(shè)備的安裝、

2、卸載、共享、保護(hù),為用戶隱藏設(shè)備細(xì)節(jié),提供緩沖管理 文件管理 網(wǎng)絡(luò)與通信管理 終端用戶操作接口:CUI、GUI、Shell腳本 應(yīng)用程序調(diào)用接口:API,7,操作系統(tǒng)的作用與功能,8,Windows API,Windows API (Application Programming Interface)是Windows操作系統(tǒng)為應(yīng)用程序設(shè)計(jì)提供的一組函數(shù)(過(guò)程)調(diào)用接口。應(yīng)用程序通過(guò)調(diào)用這些函數(shù)就可以獲得操作系統(tǒng)的底層服務(wù),訪問(wèn)系統(tǒng)管理的各種軟、硬件資源。 所有的Windows API函數(shù)都是以動(dòng)態(tài)鏈接庫(kù)導(dǎo)出函數(shù)形式提供的。大部分API函數(shù)都存放在kernel32.dll、user32.dll和

3、gdi32.dll三個(gè)動(dòng)態(tài)庫(kù)中,相應(yīng)的導(dǎo)入庫(kù)為kernel32.lib、user32.lib和gdi32.lib Windows API函數(shù)的使用說(shuō)明在MSDN中可以找到(,9,Platform SDK,Platform Software Development Kit (SDK)是微軟免費(fèi)提供的開發(fā)Windows應(yīng)用程序的開發(fā)包,它包含了如下內(nèi)容: 與Windows API相關(guān)的C頭文件(windows.h等) 與Windows API相關(guān)的導(dǎo)入庫(kù)(kernel32.lib等) Windows API的幫助文檔 C+編譯器和鏈接器 調(diào)試工具、分析工具 VC集成開發(fā)環(huán)境中已經(jīng)集成了SDK(一般

4、版本較老)。SDK也可以從微軟網(wǎng)站上免費(fèi)下載。,10,MFC與Windows API,MFC以C+源碼的形式提供給程序員,11,.NET與Windows API,12,Windows應(yīng)用程序分類,基于控制臺(tái)用戶界面的應(yīng)用程序: Console User Interface (CUI) 程序 基于圖形用戶界面的應(yīng)用程序:Graphics User Interface (GUI) 程序 在CUI程序中也可以使用所有的Windows API,甚至可以創(chuàng)建GUI窗口并進(jìn)行繪圖,所以兩種應(yīng)用程序類型之間的界限是非常模糊的。,13,CUI程序的編程框架,include int main( int argc

5、, char* argv) return 0; ,14,GUI程序的編程框架,include int WINAPI WinMain ( HINSTANCE hInstance, / 進(jìn)程句柄 HINSTANCE hPrevInstance, / 無(wú)用,永遠(yuǎn)為NULL PSTR szCmdLine, / 命令行參數(shù),以0結(jié)尾的字符串 int iCmdShow) / 主窗口初始化時(shí)的顯示方式 return 0 ; ,15,消息驅(qū)動(dòng)的編程模型,Windows為每個(gè)GUI程序維護(hù)一個(gè)消息隊(duì)列,并將與該程序相關(guān)的硬件I/O事件、軟件通知事件轉(zhuǎn)化為標(biāo)準(zhǔn)的Windows消息放在該消息隊(duì)列中。 應(yīng)用程序的一個(gè)

6、主要職責(zé)是不斷地查詢自己的消息隊(duì)列,從消息隊(duì)列中取出消息,并將消息分發(fā)給相應(yīng)的消息處理函數(shù)進(jìn)行處理。 每個(gè)消息的最終目標(biāo)是窗口。每個(gè)應(yīng)用程序都對(duì)應(yīng)一個(gè)或多個(gè)窗口,每個(gè)窗口都對(duì)應(yīng)一個(gè)窗口過(guò)程。窗口接收到屬于自己的消息后,將其發(fā)送給自己的窗口過(guò)程進(jìn)行處理。,16,消息驅(qū)動(dòng)的編程模型,在傳統(tǒng)的或“過(guò)程化”的應(yīng)用程序中,應(yīng)用程序自身控制了執(zhí)行哪一部分代碼和按何種順序執(zhí)行代碼。從第一行代碼執(zhí)行程序并按應(yīng)用程序中預(yù)定的路徑執(zhí)行,必要時(shí)可以調(diào)用某個(gè)子程序。 在消息驅(qū)動(dòng)的編程模型中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的消息時(shí)執(zhí)行不同的代碼片段。這些消息的順序決定了代碼執(zhí)行的順序,因此應(yīng)用程序每次運(yùn)行時(shí)

7、所經(jīng)過(guò)的代碼的路徑都是不同的。 因?yàn)閳?zhí)行路徑無(wú)法預(yù)測(cè),所以程序中必須對(duì)各種可能的“狀態(tài)”作一定的假設(shè)和記錄。,17,事件驅(qū)動(dòng)的編程模型,18,“窗口”對(duì)象的三要素,窗口所屬的“窗口類”:窗口類是窗口對(duì)象的模板,它主要定義了窗口的外觀屬性:標(biāo)題欄、菜單欄、系統(tǒng)菜單、最大化按鈕、最小化按鈕、邊框、客戶區(qū)、滾動(dòng)條、圖標(biāo)、鼠標(biāo)形狀等等。Windows中每個(gè)窗口類都有自己唯一的名字。 窗口所對(duì)應(yīng)的“窗口函數(shù)” :窗口函數(shù)定義了該窗口的行為方式,在窗口函數(shù)中處理與該窗口相關(guān)的消息。屬于同一個(gè)窗口類的窗口對(duì)象對(duì)應(yīng)同一個(gè)窗口函數(shù)。 窗口句柄:窗口句柄是能夠唯一標(biāo)識(shí)該窗口的標(biāo)識(shí)號(hào)。,19,關(guān)于Windows窗口

8、的兩個(gè)事實(shí),處處是“窗口”:按鈕、單選框、復(fù)選框、列表框、滾動(dòng)條和文本輸入框等都是“窗口”。它們所屬的窗口類以及所對(duì)應(yīng)的窗口函數(shù),Windows系統(tǒng)已經(jīng)做了預(yù)定義。 窗口以消息的形式接收輸入,操作系統(tǒng)與窗口之間利用消息進(jìn)行通信,不同窗口之間也利用消息進(jìn)行通信。,20,Windows 消息的屬性,typedef struct tagMSG HWND hwnd; / 消息要發(fā)向的窗口句柄 UINT message; / 消息標(biāo)識(shí)符,以WM_開頭的宏 WPARAM wParam; / 消息參數(shù)一, 4個(gè)字節(jié) LPARAM lParam; / 消息參數(shù)二, 4個(gè)字節(jié) DWORD time; / 消息放

9、入消息隊(duì)列的時(shí)間 POINT pt; / 消息放入消息隊(duì)列時(shí)的鼠標(biāo)位置 MSG, *PMSG;,消息標(biāo)識(shí)符是一個(gè)常量值,用于唯一的標(biāo)識(shí)消息。在Windows.h中都定義了一個(gè)宏與之對(duì)應(yīng),這些宏大都以WM_為前綴。,21,Windows消息舉例,WM_CHAR:如果你的窗口獲得了輸入“焦點(diǎn)”,當(dāng)你在鍵盤上按下某個(gè)鍵時(shí),你的窗口(嚴(yán)格說(shuō)是窗口函數(shù))就會(huì)接收到一個(gè)標(biāo)識(shí)符為WM_CHAR的消息,該消息的wParam參數(shù)表是該鍵的ASCII碼值。 WM_CREATE:當(dāng)你的窗口剛被創(chuàng)建且還未顯示的那一刻,你的窗口會(huì)接受到WM_CREATE消息。 WM_DESTROY:窗口被銷毀的前一刻,就會(huì)接收到一個(gè)WM_DESTROY消息。 WM_LBUTTONDOWN:鼠標(biāo)左鍵按下。 lParam參數(shù)的低16位表示鼠標(biāo)的x座標(biāo),高16位表示鼠標(biāo)的y座標(biāo)。,22,窗口函數(shù),窗口函數(shù)的4個(gè)參數(shù)與MSG結(jié)構(gòu)的前4個(gè)域相同。 窗口函數(shù)一般是由程序員定義的,但是由操作系統(tǒng)調(diào)用的一個(gè)“回調(diào)函數(shù)”,該函數(shù)用于接收和處理消息

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論