第03講應(yīng)用程序基礎(chǔ).ppt_第1頁(yè)
第03講應(yīng)用程序基礎(chǔ).ppt_第2頁(yè)
第03講應(yīng)用程序基礎(chǔ).ppt_第3頁(yè)
第03講應(yīng)用程序基礎(chǔ).ppt_第4頁(yè)
第03講應(yīng)用程序基礎(chǔ).ppt_第5頁(yè)
已閱讀5頁(yè),還剩24頁(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、1,第3講 Windows 應(yīng)用程序,要點(diǎn): 1、窗口、事件驅(qū)動(dòng)、句柄、消息 2、Windows應(yīng)用程序組成及編程步驟,Windows應(yīng)用程序,Microsoft Windows 操作系統(tǒng)為應(yīng)用程序提供了一個(gè)由窗口和菜單結(jié)構(gòu)構(gòu)成的多任務(wù)環(huán)境。 利用Visual的開(kāi)發(fā)平臺(tái),開(kāi)發(fā)的具有Windows標(biāo)準(zhǔn)的操作界面,交互式的操作方法 的應(yīng)用程序,一、Windows編程基礎(chǔ),SDK:軟件開(kāi)發(fā)工具包 (Software Development Kit ),采用交互式方法時(shí),可視化開(kāi)發(fā)平臺(tái)給出了許多選用的對(duì)象,程序員可選擇所需對(duì)象并確定其屬性,由此搭建起應(yīng)用程序的“大框架”,并可根據(jù)需要進(jìn)一步編寫(xiě)必要的細(xì)

2、節(jié)代碼段,最后構(gòu)成完整的應(yīng)用程序,編寫(xiě)Windows 程序相當(dāng)一部分工 作是在創(chuàng)建對(duì)象和 為對(duì)象屬性賦值,對(duì)象特征:具有規(guī)范形態(tài)和操作模式,API,API函數(shù) 的功能,MFC,MFC 的功能,SDK編程與MFC編程,為了使用 API 函數(shù),編程時(shí)就要用到 API 所對(duì)應(yīng)的 .H 和 .LIB 文件,而 SDK 正是提供了一整套開(kāi)發(fā) Windows 應(yīng)用程序所需的相關(guān)文件、范例和工具的“工具包”。 所以人們也常把僅使用 API 來(lái)編寫(xiě) Windows 應(yīng)用程序的開(kāi)發(fā)方式叫做“SDK編程”。而 API 和 SDK 是開(kāi)發(fā) Windows 應(yīng)用程序所必需的東西,所以其它編程框架和類(lèi)庫(kù)都是建立在它們之

3、上的。 比如MFC,雖然他們比起“SDK 編程”來(lái)有著更高的抽象度,但這絲毫不妨礙它們?cè)谛枰臅r(shí)候隨時(shí)直接調(diào)用 API 函數(shù)。 學(xué)習(xí)C+,最好是先學(xué)用SDK編寫(xiě)程序,在此期間掌握Windows操作系統(tǒng)的工作原理和各API函數(shù)的應(yīng)用,然后再深入MFC編程。,編寫(xiě)Windows應(yīng)用程序必須首先了解以下內(nèi)容: (1)窗口 (2)事件驅(qū)動(dòng) (3)句柄 (4)消息,SDK編程,(1) 窗口 一個(gè)應(yīng)用程序的窗口一般包含下列成分:,編寫(xiě)一個(gè)Windows應(yīng)用程序首先應(yīng)創(chuàng)建一個(gè)或多個(gè)窗口,隨后應(yīng)用程序的運(yùn)行過(guò)程即是窗口內(nèi)部、窗口與窗口之間、窗口與系統(tǒng)之間進(jìn)行數(shù)據(jù)處理與數(shù)據(jù)交換的過(guò)程。,應(yīng)用程 序與用 戶之間

4、交互的 接口環(huán) 境,系統(tǒng)管理 應(yīng)用程序 的基本單位,Win應(yīng)用程序 基本的操作單元,Windows程序設(shè)計(jì)是針對(duì)事件或消息的處理進(jìn)行,消息是描述事 件發(fā)生的信息 (如按下鼠標(biāo)或鍵盤(pán)),交互式程序采用了事件驅(qū)動(dòng)編程方法。,程序的執(zhí)行順序:執(zhí)行順序取決于事件發(fā)生的順序,由事件發(fā)生的順序產(chǎn)生的消息驅(qū)動(dòng)程序。,(2)事件驅(qū)動(dòng),事件驅(qū)動(dòng)過(guò)程:,常用句柄類(lèi)型及其說(shuō)明,(3) 句柄,應(yīng)用程序通過(guò) 句柄訪問(wèn)相應(yīng) 的對(duì)象信息,HWND 窗口句柄 HDC 設(shè)備環(huán)境句柄 HBITMAP 位圖句柄 HCURSOR 光標(biāo)句柄 HICON 圖標(biāo)句柄 HFONT 字體句柄 HMENU 菜單句柄 HPEN 畫(huà)筆句柄 HFIL

5、E 文件句柄 HBRUSH 畫(huà)刷句柄 HINSTANCE 當(dāng)前實(shí)例句柄,Windows應(yīng)用程序利用消息(Message)與應(yīng)用程序及系統(tǒng)進(jìn)行信息交換。,(4) 消息,BM 表示按鈕控制消息 CB 表示組合框控制消息 DM 表示默認(rèn)下壓式按鈕控制消息 EM 表示編輯控制消息 LB 表示列表框控制消息 SBM 表示滾動(dòng)條控制消息 WM 表示窗口消息,窗口管理消息 初始化消息 輸入消息 系統(tǒng)消息 剪貼板消息 控制處理消息 控制通知消息 滾動(dòng)條通知消息 非用戶區(qū)消息 MDI消息 DDE消息 應(yīng)用程序自定義的消息,系統(tǒng)定義的消息宏前綴,Windows常用消息,事件 消息 放開(kāi)鼠標(biāo)左鍵 WM_LBUTTO

6、NUP 單擊鼠標(biāo)右鍵 WM_RBUTTONDOWN 放開(kāi)鼠標(biāo)右鍵 WM_RBUTTONUP 雙擊鼠標(biāo)右鍵 WM_RBUTTONDBCLK 用戶區(qū)移動(dòng)或顯示、 用戶窗口改變大小等 WM_PAINT,二、Windows中的事件驅(qū)動(dòng)程序設(shè)計(jì),過(guò)程驅(qū)動(dòng)方法計(jì)算平均成績(jī),事件驅(qū)動(dòng)方法計(jì)算平均成績(jī),三、Windows應(yīng)用程序的基本結(jié)構(gòu),1. 應(yīng)用程序的組成,一個(gè)完整的Windows應(yīng)用程序通常由五種類(lèi)型的文件組成。,1.C語(yǔ)言源程序文件(.cpp) 2.頭文件(.h) 3.模塊定義文件(.def) 4.資源描述文件(.re) 5.項(xiàng)目文件 (vcproj),2. 源程序組成結(jié)構(gòu),1. 所有應(yīng)用程序的入口,

7、類(lèi)似Main函數(shù), 2. 完成一系列的定義和初始化,并產(chǎn)生消息循環(huán),WinMain和WndProc是 Windows應(yīng)用程序的主體,(1) WinMain函數(shù),(2) 初始化,初始化,顯示窗口,創(chuàng)建窗口實(shí)例,窗口類(lèi)的注冊(cè):窗口類(lèi)必須先注冊(cè)后使用,窗口類(lèi)的定義:定義窗口的形式與功能,RegisterClass,CreateWindow,ShowWindow ,UpdateWindow,顯示窗口后,應(yīng)用程序調(diào)用UpdateWindow更新并繪制用戶區(qū),并發(fā)出WM_PAINT消息。,(3) 消息循環(huán),將消息傳遞給WndProc函數(shù)的相應(yīng)過(guò)程處理,Windows將產(chǎn)生的消息,WinMain函數(shù),2 窗

8、口函數(shù)WndProc,WndProc函數(shù)由一個(gè)或多個(gè)switch語(yǔ)句組成。每一條case語(yǔ)句對(duì)應(yīng)一種消息,當(dāng)應(yīng)用程序接收到一個(gè)消息時(shí),相應(yīng)的case語(yǔ)句被激活并執(zhí)行相應(yīng)的響應(yīng)程序模塊。,3數(shù)據(jù)類(lèi)型,在Windows.h中定義了Windows 應(yīng)用程序中包含種類(lèi)繁多的數(shù)據(jù)類(lèi)型,4. 一些重要的數(shù)據(jù)結(jié)構(gòu),MSG:包含一個(gè)消息的全部信息,是消息發(fā)送的格式,WNDCLASSEX:包含一個(gè)窗口類(lèi)的全部信息及屬性,POINT:定義了屏幕上或窗口中的一個(gè)點(diǎn)的X和 Y坐標(biāo),RECT:定義了一個(gè)矩形區(qū)域及其左上角和右下角的坐標(biāo),幾種重要的結(jié)構(gòu),Windows應(yīng)用程序示例: 創(chuàng)建步驟: 創(chuàng)建解決方案 創(chuàng)建項(xiàng)目 選

9、擇項(xiàng)目類(lèi)型:Win32 選擇模板: Win32 項(xiàng)目 | Win32應(yīng)用程序 | 空項(xiàng)目 編輯.cpp程序 編譯.cpp程序 鏈接.obj程序 運(yùn)行.exe程序,P52 例3-1 Windows SDK 應(yīng)用程序示例,生成Windows窗口: #include #include #define IDC_BUTTON1 100 HINSTANCE hInst; LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance,HI

10、NSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) WNDCLASSEX wcex; HWND hWnd; MSG msg; TCHAR szWindowClass=LMy Windows; TCHAR szTitle=LWindows SDK 應(yīng)用程序; /窗口標(biāo)題,/窗口類(lèi)定義 wcex.cbSize=sizeof(WNDCLASSEX); wcex.style=0; wcex.lpfnWndProc=WndProc; wcex.cbClsExtra=0; wcex.cbWndExtra=0; wcex.hInstance=hInstan

11、ce; wcex.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_APPLICATION); wcex.hCursor=LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH); wcex.lpszMenuName=NULL; wcex.lpszClassName=szWindowClass; /窗口示例 wcex.hIconSm=LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_APPLICATION)

12、;,/注冊(cè)窗口類(lèi) if (!RegisterClassEx( ,/WndProc程序(1): LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) switch (message) case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hwnd, message, wParam, lParam); break; return 0; ,/WndProc程序(2): LRESULT CALLBACK

13、WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) switch (message) case WM_COMMAND: switch (LOWORD(wParam) case IDC_BUTTON1: /點(diǎn)擊按鈕 MessageBox(hwnd, _T(歡迎進(jìn)入子窗口!), _T(SDK), MB_OK|MB_ICONEXCLAMATION); break; return 0; case WM_CREATE: /創(chuàng)建子窗口控件 CreateWindow(_T(STATIC), _T(Windows SDK 應(yīng)用程序示例), WS_CHILD|WS_VISIBLE|SS_CENTER,180,100,250,30, hwnd, NULL, hInst, NULL); CreateWindow(_T(BUTT

溫馨提示

  • 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)論