




已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
MFC Windows 應(yīng)用程序設(shè)計,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,Windows是一種應(yīng)用于微型計算機(jī)的操作系統(tǒng),它為應(yīng)用程序提供了一個多任務(wù)環(huán)境,這個環(huán)境具有一致的圖形化窗口和菜單。在Windows操作系統(tǒng)上運(yùn)行的應(yīng)用程序叫做Windows應(yīng)用程序。,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,用戶操作事件消息調(diào)用,WINDOWS 程序工作原理的示意圖。,1.1 Windows應(yīng)用程序的基本概念,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,Windows應(yīng)用程序的界面 Windows應(yīng)用程序與API函數(shù) Windows的一個特殊數(shù)據(jù)類型句柄 Windows應(yīng)用程序的數(shù)據(jù)類型 消息與消息循環(huán),第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,Windows應(yīng)用程序的界面,Windows應(yīng)用程序的一個突出特點(diǎn)是它有一個美觀的圖形用戶界面(GUI)。這個圖形界面是Windows應(yīng)用程序與用戶交換信息的一個“窗口”。簡單的Windows應(yīng)用程序只有一窗口,而復(fù)雜的Windows應(yīng)用程序可能需要多個窗口。因此,設(shè)計一個或一組滿足要求的窗口,是Windows應(yīng)用程序設(shè)計中的一項重要任務(wù)。,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,Windows應(yīng)用程序與API函數(shù),為了設(shè)計Windows應(yīng)用程序,Windows提供了大量預(yù)定義的用C語言編寫的函數(shù),這些函數(shù)叫做API(Application Programming Interface)函數(shù)。API函數(shù)幾乎包含了Windows程序中所有操作功能。,Visual C+提供兩套完整的Windows程序開發(fā)系統(tǒng): 直接使用Windows提供的API 函數(shù); Application Programming Interface 采用面向?qū)ο蟮姆绞?,使用微軟基礎(chǔ)類庫MFC 。 Microsoft Foundation Classes,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,Windows API是Windows 系統(tǒng)和應(yīng)用程序間的標(biāo)準(zhǔn)接口,為應(yīng)用程序提供Windows支持的函數(shù)定義、參數(shù)定義和消息格式等。,標(biāo)準(zhǔn)Win32 API 函數(shù)可以分為以下幾類:,Windows應(yīng)用程序與API函數(shù),窗口管理函數(shù)窗口的創(chuàng)建、移動及修改; 圖形設(shè)備函數(shù)實現(xiàn)圖形的繪制及操作; 系統(tǒng)服務(wù)函數(shù)實現(xiàn)操作系統(tǒng)有關(guān)一些功能。,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,以前用來設(shè)計Windows應(yīng)用程序的開發(fā)工具是SDK(Software Development Kit,軟件開發(fā)工具包),使用SDK來設(shè)計Windows應(yīng)用程序,實際上就是在使用API函數(shù)來開發(fā)應(yīng)用程序。 自從出現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計方法以來,人們用類對Windows API函數(shù)進(jìn)行了封裝,從而使用應(yīng)用程序開發(fā)工具發(fā)生了巨大的變化。目前,用來設(shè)計Windows應(yīng)用程序的開發(fā)工具大多是“面向?qū)ο蟆钡亩沂恰翱梢暤摹保鏥isual C+、Visaul Basic、Java等。,Windows應(yīng)用程序與API函數(shù),第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,Windows的一個特殊數(shù)據(jù)類型句柄,在Windows應(yīng)用程序中,存在著很多諸如窗口、按鈕、滾動條等復(fù)雜的對象和實例,為了在程序中區(qū)分和使用它們,必須對它們進(jìn)行標(biāo)識。為了區(qū)別于普通變量的標(biāo)識,Windows把這種復(fù)雜對象的標(biāo)識叫做“句柄”。不同的Windows對象的句柄具有不同的類型。,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,Windows的一個特殊數(shù)據(jù)類型句柄,Windows對象窗口、圖標(biāo)、光標(biāo)、菜單及正在運(yùn)行的應(yīng)用程序?qū)嵗鹊取?句柄系統(tǒng)用來唯一標(biāo)識某個Windows對象的一個無符號整數(shù),相當(dāng)于Windows對象的名字,應(yīng)用程序只有通過句柄才能使用Windows對象。 應(yīng)用程序是通過恒定不變的句柄來訪問程序中各個對象的。這是多任務(wù)操作系統(tǒng)對多個進(jìn)程進(jìn)行管理的基本手段。常用的句柄類型見表1-1,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,Windows的一個特殊數(shù)據(jù)類型句柄,Windows常用句柄類型如下所示:,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,Windows應(yīng)用程序的數(shù)據(jù)類型,Windows應(yīng)用程序中的數(shù)據(jù)量非常大, 為了提高應(yīng)用程序的可讀性, Windows給許多基本數(shù)據(jù)類型定義了別名: 例如:typedef unsigned long DWORD,數(shù)據(jù)類型 說 明 BYTE 8位無符號字符 BSTR 32位字符指針 COLORREF 32位整數(shù),表示一個顏色 WORD 16位無符號整數(shù) LONG 32位有符號整數(shù) DWORD 32位無符號整數(shù) UINT 32位無符號整數(shù) BOOL 布爾值,值為TRUE或FALSE,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,Windows應(yīng)用程序的數(shù)據(jù)類型,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,操作事件消息調(diào)用,我們發(fā)現(xiàn)有三種類型的消息:窗口、命令( Command )和控件通知(Control Notification),并且這些消息既可以發(fā)送( sent ),也可以寄送( post )。,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,消息與消息循環(huán)事件與消息,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,消息與消息循環(huán)事件與消息,只要有事件發(fā)生,系統(tǒng)即產(chǎn)生特定的消息。消息描述了事件的類別,包含了相關(guān)信息,Windows應(yīng)用程序利用消息與系統(tǒng)及其它應(yīng)用程序進(jìn)行信息交換。,消息結(jié)構(gòu)的定義如下: typedef struct tagMSG HWND hwnd; /指定消息發(fā)向的窗口句柄 UINT message; /消息的標(biāo)識碼 WPARAM wParam; /消息的附加信息1 LPARAM lParam; /消息的附加信息2 DWORD time; /消息進(jìn)入消息隊列的時刻 POINT pt; /表示發(fā)送該消息時光標(biāo)的位置 MSG;,消息結(jié)構(gòu)中各個成員的意義如下: message是標(biāo)識消息的消息值或消息名。每個消息都有 唯一一個數(shù)值標(biāo)識,常用不同前綴的符號常量以示 區(qū)別。例如,WM_表示窗口消息 。,Windows常用的窗口消息和消息值定義于winuser.h中 #define WM_CREATE 0X0001 /創(chuàng)建窗口產(chǎn)生的消息 #define WM_DESTROY 0X0002 /撤銷窗口產(chǎn)生的消息 #define WM_PAINT 0X000F /重畫窗口產(chǎn)生的消息 #define WM_CLOSE 0X0010 /關(guān)閉窗口產(chǎn)生的消息 #define WM_CHAR 0X0102 /按下非系統(tǒng)鍵產(chǎn)生的字符消息 #define WM_USER 0X0400 /用戶自定義消息,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,消息與消息循環(huán)事件與消息,基本概念, wParam,lParam消息參數(shù),均為32位 其數(shù)據(jù)類型在windef.h中定義如下: typedef UINT WPARAM; typedef LONG LPARAM;, pt表示消息進(jìn)入消息隊列時鼠標(biāo)指針的屏幕坐標(biāo),數(shù)據(jù)類型POINT是定義在windef.h中的結(jié)構(gòu)體,表示屏幕上一點(diǎn),定義如下: typedef struct tagPOINT LONG x; /表示點(diǎn)的屏幕橫坐標(biāo) LONG y; /表示點(diǎn)的屏幕縱坐標(biāo) POINT, PPOINT,NEAR *NPPOINT,FAR *LPPOINT;,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,消息與消息循環(huán)事件與消息,基本概念,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,消息與消息循環(huán)事件與消息,基本概念,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,消息與消息循環(huán)消息循環(huán),由于windows事件的發(fā)生的是隨機(jī)的,程序的執(zhí)行先后順序也無法預(yù)測,系統(tǒng)采用消息隊列來存放事件發(fā)生的消息,然后從消息隊列中依次取出消息進(jìn)行相應(yīng)的處理。,send,消息泵,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,消息與消息循環(huán)消息循環(huán),應(yīng)用程序為了取得消息隊列中的消息,需要調(diào)用Windows提供的一個API函數(shù)GetMessage,并利用這個函數(shù)的返回值組織一個循環(huán)來不斷獲取消息,一旦獲取到消息,就這把個消息派送給系統(tǒng)。這個循環(huán)叫做消息循環(huán),在Windows應(yīng)用程序中,消息循環(huán)的代碼如下: while(GetMessage( ,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,基本概念,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,1.2 Windows應(yīng)用程序的結(jié)構(gòu),主函數(shù) 消息的處理部分窗口函數(shù),理解Windows系統(tǒng)、主函數(shù)、窗口函數(shù)之間的關(guān)系,對于編寫windows 程序的程序員來講,是極為重要的。主函數(shù)和窗口函數(shù)都是windows系統(tǒng)來調(diào)用的函數(shù)。, 程序啟動之后,系統(tǒng)首先調(diào)用的主函數(shù),而窗口函數(shù)是主函數(shù)獲得消息并把消息發(fā)給系統(tǒng)后,由系統(tǒng)調(diào)用的函數(shù)。, 不同的消息所對應(yīng)的操作就是由窗口函數(shù)完成的。,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,應(yīng)用程序結(jié)構(gòu),主函數(shù),為了與DOS C程序的主函數(shù)名稱相區(qū)分,Windows應(yīng)用程序的主函數(shù)名稱為WinMain。主函數(shù)主要完成兩個任務(wù): 創(chuàng)建應(yīng)用程序的界面窗口; 建立前面提到過的消息循環(huán)。 創(chuàng)建應(yīng)用程序窗口要用到4個API函數(shù)(描述窗口屬性的數(shù)據(jù)結(jié)構(gòu)窗口類、注冊窗口類、創(chuàng)建窗口、顯示窗口); 建立消息循環(huán)要用到3個API函數(shù)(GetMessage、Translate、DispatchMessage)。,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,Windows應(yīng)用程序的主函數(shù)名稱為WinMain。,創(chuàng)建應(yīng)用程序窗口要用到4個API函數(shù),注冊窗口類、創(chuàng)建窗口、顯示窗口,更新窗口);,建立消息循環(huán)要用到3個API函數(shù)(GetMessage、Translate、DispatchMessage)。,應(yīng)用程序結(jié)構(gòu),第一講 Windows 應(yīng)用程序基礎(chǔ)知識,應(yīng)用程序結(jié)構(gòu),主函數(shù),TranslateMessage函數(shù)功能:該函數(shù)將虛擬鍵消息轉(zhuǎn)換為字符消息。字符消息被寄送到調(diào)用線程的消息隊列里,當(dāng)下一次線程調(diào)用函數(shù)GetMessage或PeekMessage時被讀出。,DispatchMessage函數(shù)功能:該函數(shù)調(diào)度一個消息給窗口程序。通常調(diào)度從GetMessage取得的消息。,GetMessage函數(shù)功能:該函數(shù)從調(diào)用線程的消息隊列里取得一個消息并將其放于指定的結(jié)構(gòu)(&message)。此函數(shù)可取得與指定窗口聯(lián)系的消息和由PostThreadMesssge寄送的線程消息。,消息的處理部分窗口函數(shù),第一講 Windows 應(yīng)用程序基礎(chǔ)知識,應(yīng)用程序結(jié)構(gòu),具有窗口界面的Windows應(yīng)用程序,必須要有一個“窗口函數(shù)”,各種消息的處理就是在這里完成的,它是完成用戶任務(wù)的核心。 不同的消息所對應(yīng)的操作就是由窗口函數(shù)完成的, windows程序員的工作,就是編寫窗口函數(shù)的case代碼。,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,實例分析,例11:當(dāng)鼠標(biāo)左鍵單擊窗口的用戶用戶約時,發(fā)出“?!甭?第一講 Windows 應(yīng)用程序基礎(chǔ)知識,實例分析,例11:當(dāng)鼠標(biāo)左鍵單擊窗口的用戶用戶約時,發(fā)出“?!甭?第一講 Windows 應(yīng)用程序基礎(chǔ)知識,實例分析,例11:當(dāng)鼠標(biāo)左鍵單擊窗口的用戶用戶約時,發(fā)出“叮”聲,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,實例分析,例11:當(dāng)鼠標(biāo)左鍵單擊窗口的用戶用戶約時,發(fā)出“叮”聲,由系統(tǒng)自動生成。,由此開始添加代碼,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,Windows應(yīng)用程序的主函數(shù)名稱為WinMain。,創(chuàng)建應(yīng)用程序窗口要用到4個API函數(shù),注冊窗口類、創(chuàng)建窗口、顯示窗口,更新窗口);,建立消息循環(huán)要用到3個API函數(shù)(GetMessage、Translate、DispatchMessage)。,應(yīng)用程序結(jié)構(gòu),例11:當(dāng)鼠標(biāo)左鍵單擊窗口的用戶用戶約時,發(fā)出“?!甭?例11:當(dāng)鼠標(biāo)左鍵單擊窗口的用戶區(qū)時,發(fā)出“?!甭?例11:當(dāng)鼠標(biāo)左鍵單擊窗口的用戶區(qū)時約時,發(fā)出“?!甭?第一講 Windows 應(yīng)用程序基礎(chǔ)知識,例1-2 :當(dāng)鼠標(biāo)左鍵單擊窗口的用戶區(qū)時,顯示一個字符串“Hello !”,實例分析,Hello!,用C函數(shù)封裝的Windows程序.,第一講 Windows 應(yīng)用程序基礎(chǔ)知識,例1-2 :用C函數(shù)封裝的Windows程序,當(dāng)鼠標(biāo)左鍵單擊窗口的用戶用戶區(qū)時,顯示一個字符串“Hello !”,實例分析,例1-
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年冷庫緊急情況處理試題
- 山西小學(xué)生課件網(wǎng)
- 展風(fēng)采班會課件
- 小學(xué)生鐘表制作課件圖片
- 35 必修2 第六單元 第29講 生物的進(jìn)化
- 24 必修2 第四單元 第21講 基因的自由組合定律拓展題型
- 2025年廣東省中考道德與法治真題含答案
- 酒后代駕安全責(zé)任合同
- 智能制造展覽會參展商權(quán)益保障協(xié)議
- 舊車翻新專業(yè)保養(yǎng)與維修協(xié)議書
- 寶媽日常心理護(hù)理
- 2025年社會學(xué)概論測試題含答案(附解析)
- 2025-2030年環(huán)境工程產(chǎn)業(yè)深度調(diào)研及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025年事業(yè)單位公開招聘考試(E類)《綜合應(yīng)用能力西醫(yī)臨床》試卷真題及完整解析
- 保險公司保單管理制度
- 2025年中國AI翻譯行業(yè)市場全景分析及前景機(jī)遇研判報告
- 2025-2030中國酶聯(lián)免疫吸附測定(ELISA)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025年內(nèi)蒙古眾達(dá)人力資源公司招聘題庫帶答案分析
- 水利工程隱患排查課件
- 醫(yī)藥公司廉政管理制度
- T/CEPPEA 5023-2023風(fēng)光儲充一體化充電站設(shè)計規(guī)范
評論
0/150
提交評論