版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Windows編程基礎(chǔ)知識,1,學(xué)習(xí)交流PPT,內(nèi)容提要,1 Windows編程概述 2 基本概念 3 Windows程序基本結(jié)構(gòu) 4 程序示例,2,學(xué)習(xí)交流PPT,1.1.Windows編程概述,3,學(xué)習(xí)交流PPT,1 Windows編程,Windws編程 在微軟的Windows操作系統(tǒng)下編程 使用的工具 微軟公司和其他公司(Boland等)在該操作系統(tǒng)下提供了了很多可視化的開發(fā)系統(tǒng)平臺,如VC+、VB 、 BC、Delphi等。 我們使用VC+,4,學(xué)習(xí)交流PPT,1 Windows編程(續(xù)),可視化開發(fā)系統(tǒng) (資源和工具的集成),源程序 編輯器 編譯器,調(diào)試工具 語法檢查 程序修改 運(yùn)行
2、監(jiān)視,應(yīng)用程序 Help和Setup 開發(fā)工具,函數(shù)庫和 系統(tǒng)函數(shù) 開發(fā)工具,資源管理器 各種窗口和 控件的編輯器,例程庫 及Help,其他 功能,5,學(xué)習(xí)交流PPT,2 Windows程序特點(diǎn),Windows程序特點(diǎn) 1圖形用戶界面(窗口)統(tǒng)一、友好 2獨(dú)立于設(shè)備的圖形操作(GUI) 3支持多任務(wù)機(jī)制(多線程) 4事件驅(qū)動的程序設(shè)計(jì)(消息隊(duì)列機(jī)制) 5程序和資源分開、資源共享 6支持應(yīng)用程序間的數(shù)據(jù)交換(剪貼板等),6,學(xué)習(xí)交流PPT,2 Windows程序特點(diǎn)(續(xù)),一個簡單的Windows程序,#include int CALLBACK WinMain( HINSTANCE hInsta
3、nce, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) / 產(chǎn)生一個問候小窗口 MessageBox ( NULL, “Hello World!”, “Say Hello”, MB_OK ); return 1; ,7,學(xué)習(xí)交流PPT,3 Windows程序設(shè)計(jì)方法,傳統(tǒng)式寫法 使用C語言語法規(guī)范的API函數(shù)(Application Programming Interface) 交互式寫法 使用C+語法規(guī)范的MFC類庫 (Microsoft Foundation Class) 其他寫法 使用模板技術(shù)等的ATL模板庫 (Activ
4、eX Template Library) 和組件技術(shù)等,8,學(xué)習(xí)交流PPT,1.2.基本概念,9,學(xué)習(xí)交流PPT,1 Windows程序及對象,Windows應(yīng)用程序使用的界面是由各種圖形元素組成的圖形界面 各個圖形元素具有不同的功能 應(yīng)用程序的用戶主要是通過鍵盤和鼠標(biāo)對應(yīng)用程序界面上的圖形元素進(jìn)行操作來與Windows應(yīng)用程序進(jìn)行交互的,10,學(xué)習(xí)交流PPT,1 Windows程序及對象(續(xù)),在Windows程序(系統(tǒng))中,存在著許多與DOS應(yīng)用程序不同的復(fù)雜對象 對象和句柄 Windows的程序中,對象是具有規(guī)范形態(tài)和操作模式的部件,例如窗口、按鈕、滾動條等; Windows把為這種復(fù)雜
5、對象所定義的標(biāo)識叫做句柄,應(yīng)用程序過句柄訪問相應(yīng)的對象信息。 句柄實(shí)際上在C/C+中實(shí)現(xiàn)為指針(或認(rèn)為其一個長度為4字節(jié)長整數(shù)值),11,學(xué)習(xí)交流PPT,1 Windows程序及對象(續(xù)),常用句柄類型 HWND窗口句柄 HINSTANCE當(dāng)前實(shí)例句柄 HCURSOR光標(biāo)句柄 HFONT字體句柄 HPEN畫筆句柄 HBRUSH畫刷句柄 HDC設(shè)備環(huán)境句柄 HICON圖標(biāo)句柄 HMENU菜單句柄 HFILE文件句柄,句柄所標(biāo)識對象實(shí)例 窗口 按鈕 圖標(biāo) 滾動條 輸出設(shè)備 控件 文件 程序進(jìn)程 如此等等.,12,學(xué)習(xí)交流PPT,2 數(shù)據(jù)類型別名,Windows應(yīng)用程序中的數(shù)據(jù)量非常大,為了提高應(yīng)用
6、程序的可讀性,Windows給許多基本數(shù)據(jù)類型定義了別名,例如: typedef void * HANDLE; typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char BYTE; typedef unsigned short WORD;,13,學(xué)習(xí)交流PPT,2 數(shù)據(jù)類型別名(續(xù)),Windows應(yīng)用程序還使用了一些結(jié)構(gòu)類型的數(shù)據(jù),例如: typedefstructtagPOINT LONG x, y; POINT; / 描述了一個點(diǎn)的位置。,14,學(xué)習(xí)交流PPT,3 窗口及其功能,窗口Windows程序界面的主
7、要組成 典型窗口及其構(gòu)成,控制菜單框,標(biāo)題欄,15,學(xué)習(xí)交流PPT,3 窗口及其功能(續(xù)),窗口功能 1 系統(tǒng)對應(yīng)用程序管理的基本單位 2 應(yīng)用程序與用戶之間交互的接口環(huán)境 3 Window應(yīng)用程序基本的操作單元 Windows應(yīng)用程序編程 創(chuàng)建一個或多個窗口 Windows應(yīng)用程序運(yùn)行 窗口內(nèi)部、窗口與窗口之間、窗口與系統(tǒng)之間進(jìn)行數(shù)據(jù)處理與交換的過程,16,學(xué)習(xí)交流PPT,4 消息的概念,消息應(yīng)用程序與系統(tǒng)及其它應(yīng)用程序進(jìn)行信息交換的數(shù)據(jù)結(jié)構(gòu) 消息的三個組成部分: 消息號:由事先定義好的消息名標(biāo)識 字參數(shù)(wParam) :提供消息的附加信息 長字參數(shù)(lParam) :提供消息的附加信息
8、附加信息與具體消息號的值有關(guān),17,學(xué)習(xí)交流PPT,4 消息的概念(續(xù)),消息的結(jié)構(gòu),typedef struct tagMSG HWND hwnd; /窗口句柄,為null,則檢索隊(duì)的所有消息 UINT message;/消息號,由Windows.h中的宏定義來標(biāo)識 WPARAM wParam; /消息的附加信息 LPARAM lParam; /消息的附加信息 DWORD time; /指定消息送至隊(duì)列的時間 POINT pt; /指定消息發(fā)送時屏幕光標(biāo)的位置 MSG;,18,學(xué)習(xí)交流PPT,4 消息的概念(續(xù)),系統(tǒng)能產(chǎn)生很多消息 各種消息分類,分別以不同的前綴表示: WM 窗口消息 BM
9、 按鈕控制消息 CB 組合框控制消息 DM 默認(rèn)下壓式按鈕控制消息 EM 編輯控制消息 LB 列表框控制消息 SBM 滾動條控制消息,19,學(xué)習(xí)交流PPT,4 消息的概念(續(xù)),常見的Windows消息有,20,學(xué)習(xí)交流PPT,5 事件及事件驅(qū)動,事件系統(tǒng)運(yùn)行時發(fā)生的事情 事件通常以以下三種方式產(chǎn)生: l通過輸入設(shè)備,如鍵盤和鼠標(biāo); l通過屏幕上可視的對象,如菜單、工具欄按鈕、滾動條和對話框上的控件; l來自Windows內(nèi)部,如當(dāng)一個后面的窗口顯示到前面來時。 事件的結(jié)果系統(tǒng)以消息的形式記錄 事件的結(jié)果即消息,21,學(xué)習(xí)交流PPT,5 事件及事件驅(qū)動(續(xù)),Windows程序和系統(tǒng)是事件驅(qū)動
10、的,事件驅(qū)動也稱消息驅(qū)動,事件驅(qū)動模型如下:,22,學(xué)習(xí)交流PPT,5 事件及事件驅(qū)動(續(xù)),操作系統(tǒng)會用特定的機(jī)構(gòu)管理消息 消息隊(duì)列 作為結(jié)果的消息,系統(tǒng)以隊(duì)列形式進(jìn)行管理 操作系統(tǒng)(軟件程序)有監(jiān)控機(jī)構(gòu)、管理機(jī)構(gòu)、通訊機(jī)構(gòu)等 應(yīng)用程序在這些機(jī)構(gòu)的管理下運(yùn)行,23,學(xué)習(xí)交流PPT,5 事件及事件驅(qū)動(續(xù)),支持隊(duì)列特征的消息驅(qū)動模型,24,學(xué)習(xí)交流PPT,6 API函數(shù),Windows提供了大量預(yù)定義的用C語言編寫的函數(shù)和數(shù)據(jù)結(jié)構(gòu)集合,該集合叫API(Application Programming Interface) 早期的Windows應(yīng)用程序設(shè)計(jì)人員要使用相應(yīng)的API函數(shù)來編寫程序。
11、類型別名和MSG等結(jié)構(gòu)都包含在API中,25,學(xué)習(xí)交流PPT,6 API函數(shù)(續(xù)),根據(jù)Windows API函數(shù)的功能,可以將其分為三類: 1)管理函數(shù):實(shí)現(xiàn)窗口和其它對象的創(chuàng)建、移動和修改等功能。 2)圖形設(shè)備函數(shù):實(shí)現(xiàn)與設(shè)備無關(guān)的圖形操作功能,可以實(shí)現(xiàn)圖形繪制。 3)系統(tǒng)服務(wù)函數(shù):實(shí)現(xiàn)與操作系統(tǒng)有關(guān)的多種功能,如進(jìn)程線程管理、任務(wù)調(diào)度等。,26,學(xué)習(xí)交流PPT,1.3.Win32程序基本結(jié)構(gòu),27,學(xué)習(xí)交流PPT,1 應(yīng)用程序的組成,Windows 程序分為“程序代碼”和“UI(User Interface)資源”兩大部份 所謂 UI 資源是指功能菜單、對話框外貌、程序圖標(biāo)、光標(biāo)形狀等
12、一個完整的Windows應(yīng)用程序通常包含如下幾種類型的文件: C/C+語言源程序文件(.c或.cpp) 頭文件(.h) 資源描述文件(.rc) 模塊定義文件(.def).,28,學(xué)習(xí)交流PPT,1 應(yīng)用程序的組成(續(xù)),源程序組成 源程序主要由主函數(shù)(入口函數(shù))和窗口函數(shù)及其相關(guān)函數(shù)組成 WinMain和WinProc是Win32源程序主體 前者是應(yīng)用程序的入口,類似main函數(shù),29,學(xué)習(xí)交流PPT,2 WinMain函數(shù),三個基本的組成部分: 函數(shù)說明 初始化 消息循環(huán) 功能 注冊窗口類,建立窗口及初始化 進(jìn)入消息循環(huán),據(jù)消息調(diào)用相應(yīng)的處理過程 當(dāng)消息循環(huán)檢索到WM_QUIT時終止程序運(yùn)行
13、,30,學(xué)習(xí)交流PPT,2 WinMain函數(shù)(續(xù)),函數(shù)(原型)說明,注意!Windows操作系統(tǒng)是多任務(wù)管理的,同一應(yīng)用程序可能同時存在多個窗口,Windows系統(tǒng)對每個窗口的執(zhí)行稱為一個實(shí)例,并用一個實(shí)例句柄來唯一標(biāo)識它。,int WINAPI WinMain ( HINSTANCE hThisInst,應(yīng)用當(dāng)前實(shí)例句柄 HINSTANCe hPrevInst,應(yīng)用其他實(shí)例句柄 LPSTR lpszCmdLine, 指向命令行參數(shù)的指針 Int nCmdShow初始窗口顯示方式的整數(shù)值標(biāo)識 ),31,學(xué)習(xí)交流PPT,2 WinMain函數(shù)(續(xù)),初始化 初始化包括窗口類的定義、注冊窗口類
14、、創(chuàng)建窗口和顯示窗口四部分。需要注意的是,在顯示窗口ShowWindow函數(shù)后,需調(diào)用UpdateWindow函數(shù)更新并繪制用戶區(qū),并發(fā)出WM_PAINT消息。,32,學(xué)習(xí)交流PPT,2 WinMain函數(shù)(續(xù)),消息循環(huán) 應(yīng)用程序通常有一段代碼稱為消息循環(huán),又稱為消息泵,它是程序的動力結(jié)構(gòu),形式如下,MSG msg; /從消息隊(duì)列中提取消息 while (GetMessage( /將消息傳送到指定窗口函數(shù) / 以上出現(xiàn)的函數(shù)都是 Windows API 函數(shù),33,學(xué)習(xí)交流PPT,2 WinMain函數(shù)(續(xù)),消息循環(huán)中: 函數(shù)GetMessage形式為: GetMessage(lpMSG,
15、 /指向MSG結(jié)構(gòu)的指針 hwnd, nMsgFilteMin, /用于消息過濾的最小消息號值 nMsgFilterMax /用于消息過濾的最大消息號值) GetMessage從消息隊(duì)列中讀取消息,并將消息放在MSG結(jié)構(gòu)中,返回零值,即檢索到WM_QUIT消息,程序結(jié)束循環(huán)并退出,34,學(xué)習(xí)交流PPT,2 WinMain函數(shù)(續(xù)),DispatchMessage函數(shù) 該函數(shù)負(fù)責(zé)將消息分發(fā)給窗口函數(shù)(可以理解為其用指針間接調(diào)用了窗口過程函數(shù)) 在窗口產(chǎn)生過程中,要使用函數(shù)指針為窗口聯(lián)系一個函數(shù)(通常為WndProc) WndProc窗口函數(shù)是程序和用戶交互的主要處理部分!,35,學(xué)習(xí)交流PPT,
16、3 窗口函數(shù)WinProc,WndProc函數(shù)由一個或多個switch語句組成。每一條case語句對應(yīng)一種消息,當(dāng)應(yīng)用程序接收到一個消息時,相應(yīng)的case語句被激活并執(zhí)行相應(yīng)的響應(yīng)程序模塊。,WndProc,包含了對各種可能接收到的消息的處理過程,定義了應(yīng)用程序?qū)邮盏降牟煌⒌捻憫?yīng),36,學(xué)習(xí)交流PPT,窗口函數(shù)的一般形式如下: LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae, WPARAM wParam,LPARAM lParam ) switch(message) message為標(biāo)識的消息 case break; case WM_DES
17、TROY: PostQuitMessage(0); default: return DefWindowProc(hwnd,message,wParam,lParam); return(0); ,在消息處理程序段中一般都有對WM_DESTROY的處理,該消息是關(guān)閉窗口時發(fā)出的。它向應(yīng)用程序發(fā)出WM_QUIT消息,請求退出處理函數(shù):void PostQuitMessage(int nExitCode) /nExitCode為應(yīng)用程序的退出代碼,為未定義處理過程的消息提供缺省處理,37,學(xué)習(xí)交流PPT,4 程序與系統(tǒng)之間的關(guān)系,操作系統(tǒng)監(jiān)控機(jī)構(gòu)感知事件并產(chǎn)生消息 系統(tǒng)將消息發(fā)給活動窗口消息隊(duì)列 應(yīng)用
18、程序擁有一個消息隊(duì)列 程序處理過程: 消息泵獲得消息GetMessage,然后分發(fā)消息DispatchMessage給窗口過程WndProc(函數(shù)調(diào)用過程)作相應(yīng)處理返回,接下來再獲取消息,如此循環(huán)重復(fù),直到GetMessage檢到WM_QUIT消息返回0值。,38,學(xué)習(xí)交流PPT,4 程序與系統(tǒng)之間的關(guān)系(續(xù)),39,學(xué)習(xí)交流PPT,1.4.完整程序示例,40,學(xué)習(xí)交流PPT,應(yīng)用程序舉例,#include/包含應(yīng)用程序中所需的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)的定義 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /窗口函數(shù)說明 /- 以下初始化窗口類
19、 - int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow) HWND hwnd ; MSG Msg ; WNDCLASS wndclass ; char lpszClassName = 窗口;/窗口類名 char lpszTitle= My_Windows;/窗口標(biāo)題名,41,學(xué)習(xí)交流PPT,/窗口類的定義 wndclass.style=0;/窗口類型為缺省類型 wndclass.lpfnWndProc=WndProc;/定義窗口處理函數(shù) wndclass.cbClsExtra=0;/窗口類無擴(kuò)展 wndclass.cbWndExtra=0;/窗口實(shí)例無擴(kuò)展 wndclass.hInstance=hInstance;/當(dāng)前實(shí)例句柄 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); /窗口的最小化圖標(biāo)為缺省圖標(biāo) wndclass.hCursor=LoadCursor(NULL,IDC_
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年江西師范高等??茖W(xué)校單招職業(yè)技能考試備考試題含詳細(xì)答案解析
- 2026年青島遠(yuǎn)洋船員職業(yè)學(xué)院單招綜合素質(zhì)筆試參考題庫含詳細(xì)答案解析
- 2026年朔州師范高等??茖W(xué)校單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 2026年廣西科技師范學(xué)院單招綜合素質(zhì)考試參考題庫含詳細(xì)答案解析
- 2026年南京城市職業(yè)學(xué)院單招綜合素質(zhì)考試備考題庫含詳細(xì)答案解析
- 2026年浙江經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試備考題庫含詳細(xì)答案解析
- 2026年湖南城建職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年鄭州工業(yè)安全職業(yè)學(xué)院單招綜合素質(zhì)筆試備考題庫含詳細(xì)答案解析
- 2026年安徽工貿(mào)職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考題庫含詳細(xì)答案解析
- 2026年石家莊人民醫(yī)學(xué)高等??茖W(xué)校高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細(xì)解析
- 2025大模型安全白皮書
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫及1套參考答案詳解
- 工程款糾紛專用!建設(shè)工程施工合同糾紛要素式起訴狀模板
- 2026湖北武漢長江新區(qū)全域土地管理有限公司招聘3人筆試備考題庫及答案解析
- 110(66)kV~220kV智能變電站設(shè)計(jì)規(guī)范
- (正式版)DB44∕T 2784-2025 《居家老年人整合照護(hù)管理規(guī)范》
- 2025年美國心臟病協(xié)會心肺復(fù)蘇和心血管急救指南(中文完整版)
- (2025年)教育博士(EdD)教育領(lǐng)導(dǎo)與管理方向考試真題附答案
- 1、湖南大學(xué)本科生畢業(yè)論文撰寫規(guī)范(大文類)
- 基于多源數(shù)據(jù)融合的深圳市手足口病時空傳播模擬與風(fēng)險預(yù)測模型構(gòu)建及應(yīng)用
- 咯血的急救及護(hù)理
評論
0/150
提交評論