Windows應用程序基礎知識.ppt_第1頁
Windows應用程序基礎知識.ppt_第2頁
Windows應用程序基礎知識.ppt_第3頁
Windows應用程序基礎知識.ppt_第4頁
Windows應用程序基礎知識.ppt_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

MFC Windows 應用程序設計,第一講 Windows 應用程序基礎知識,第一講 Windows 應用程序基礎知識,Windows是一種應用于微型計算機的操作系統(tǒng),它為應用程序提供了一個多任務環(huán)境,這個環(huán)境具有一致的圖形化窗口和菜單。在Windows操作系統(tǒng)上運行的應用程序叫做Windows應用程序。,第一講 Windows 應用程序基礎知識,用戶操作事件消息調用,WINDOWS 程序工作原理的示意圖。,1.1 Windows應用程序的基本概念,第一講 Windows 應用程序基礎知識,Windows應用程序的界面 Windows應用程序與API函數 Windows的一個特殊數據類型句柄 Windows應用程序的數據類型 消息與消息循環(huán),第一講 Windows 應用程序基礎知識,基本概念,Windows應用程序的界面,Windows應用程序的一個突出特點是它有一個美觀的圖形用戶界面(GUI)。這個圖形界面是Windows應用程序與用戶交換信息的一個“窗口”。簡單的Windows應用程序只有一窗口,而復雜的Windows應用程序可能需要多個窗口。因此,設計一個或一組滿足要求的窗口,是Windows應用程序設計中的一項重要任務。,第一講 Windows 應用程序基礎知識,基本概念,Windows應用程序與API函數,為了設計Windows應用程序,Windows提供了大量預定義的用C語言編寫的函數,這些函數叫做API(Application Programming Interface)函數。API函數幾乎包含了Windows程序中所有操作功能。,Visual C+提供兩套完整的Windows程序開發(fā)系統(tǒng): 直接使用Windows提供的API 函數; Application Programming Interface 采用面向對象的方式,使用微軟基礎類庫MFC 。 Microsoft Foundation Classes,第一講 Windows 應用程序基礎知識,基本概念,Windows API是Windows 系統(tǒng)和應用程序間的標準接口,為應用程序提供Windows支持的函數定義、參數定義和消息格式等。,標準Win32 API 函數可以分為以下幾類:,Windows應用程序與API函數,窗口管理函數窗口的創(chuàng)建、移動及修改; 圖形設備函數實現圖形的繪制及操作; 系統(tǒng)服務函數實現操作系統(tǒng)有關一些功能。,第一講 Windows 應用程序基礎知識,基本概念,以前用來設計Windows應用程序的開發(fā)工具是SDK(Software Development Kit,軟件開發(fā)工具包),使用SDK來設計Windows應用程序,實際上就是在使用API函數來開發(fā)應用程序。 自從出現了面向對象程序設計方法以來,人們用類對Windows API函數進行了封裝,從而使用應用程序開發(fā)工具發(fā)生了巨大的變化。目前,用來設計Windows應用程序的開發(fā)工具大多是“面向對象”的而且是“可視的”,如Visual C+、Visaul Basic、Java等。,Windows應用程序與API函數,第一講 Windows 應用程序基礎知識,基本概念,Windows的一個特殊數據類型句柄,在Windows應用程序中,存在著很多諸如窗口、按鈕、滾動條等復雜的對象和實例,為了在程序中區(qū)分和使用它們,必須對它們進行標識。為了區(qū)別于普通變量的標識,Windows把這種復雜對象的標識叫做“句柄”。不同的Windows對象的句柄具有不同的類型。,第一講 Windows 應用程序基礎知識,基本概念,Windows的一個特殊數據類型句柄,Windows對象窗口、圖標、光標、菜單及正在運行的應用程序實例等等。 句柄系統(tǒng)用來唯一標識某個Windows對象的一個無符號整數,相當于Windows對象的名字,應用程序只有通過句柄才能使用Windows對象。 應用程序是通過恒定不變的句柄來訪問程序中各個對象的。這是多任務操作系統(tǒng)對多個進程進行管理的基本手段。常用的句柄類型見表1-1,第一講 Windows 應用程序基礎知識,基本概念,Windows的一個特殊數據類型句柄,Windows常用句柄類型如下所示:,第一講 Windows 應用程序基礎知識,基本概念,Windows應用程序的數據類型,Windows應用程序中的數據量非常大, 為了提高應用程序的可讀性, Windows給許多基本數據類型定義了別名: 例如:typedef unsigned long DWORD,數據類型 說 明 BYTE 8位無符號字符 BSTR 32位字符指針 COLORREF 32位整數,表示一個顏色 WORD 16位無符號整數 LONG 32位有符號整數 DWORD 32位無符號整數 UINT 32位無符號整數 BOOL 布爾值,值為TRUE或FALSE,第一講 Windows 應用程序基礎知識,基本概念,Windows應用程序的數據類型,第一講 Windows 應用程序基礎知識,操作事件消息調用,我們發(fā)現有三種類型的消息:窗口、命令( Command )和控件通知(Control Notification),并且這些消息既可以發(fā)送( sent ),也可以寄送( post )。,第一講 Windows 應用程序基礎知識,基本概念,消息與消息循環(huán)事件與消息,第一講 Windows 應用程序基礎知識,基本概念,消息與消息循環(huán)事件與消息,只要有事件發(fā)生,系統(tǒng)即產生特定的消息。消息描述了事件的類別,包含了相關信息,Windows應用程序利用消息與系統(tǒng)及其它應用程序進行信息交換。,消息結構的定義如下: typedef struct tagMSG HWND hwnd; /指定消息發(fā)向的窗口句柄 UINT message; /消息的標識碼 WPARAM wParam; /消息的附加信息1 LPARAM lParam; /消息的附加信息2 DWORD time; /消息進入消息隊列的時刻 POINT pt; /表示發(fā)送該消息時光標的位置 MSG;,消息結構中各個成員的意義如下: message是標識消息的消息值或消息名。每個消息都有 唯一一個數值標識,常用不同前綴的符號常量以示 區(qū)別。例如,WM_表示窗口消息 。,Windows常用的窗口消息和消息值定義于winuser.h中 #define WM_CREATE 0X0001 /創(chuàng)建窗口產生的消息 #define WM_DESTROY 0X0002 /撤銷窗口產生的消息 #define WM_PAINT 0X000F /重畫窗口產生的消息 #define WM_CLOSE 0X0010 /關閉窗口產生的消息 #define WM_CHAR 0X0102 /按下非系統(tǒng)鍵產生的字符消息 #define WM_USER 0X0400 /用戶自定義消息,第一講 Windows 應用程序基礎知識,消息與消息循環(huán)事件與消息,基本概念, wParam,lParam消息參數,均為32位 其數據類型在windef.h中定義如下: typedef UINT WPARAM; typedef LONG LPARAM;, pt表示消息進入消息隊列時鼠標指針的屏幕坐標,數據類型POINT是定義在windef.h中的結構體,表示屏幕上一點,定義如下: typedef struct tagPOINT LONG x; /表示點的屏幕橫坐標 LONG y; /表示點的屏幕縱坐標 POINT, PPOINT,NEAR *NPPOINT,FAR *LPPOINT;,第一講 Windows 應用程序基礎知識,消息與消息循環(huán)事件與消息,基本概念,第一講 Windows 應用程序基礎知識,消息與消息循環(huán)事件與消息,基本概念,第一講 Windows 應用程序基礎知識,基本概念,消息與消息循環(huán)消息循環(huán),由于windows事件的發(fā)生的是隨機的,程序的執(zhí)行先后順序也無法預測,系統(tǒng)采用消息隊列來存放事件發(fā)生的消息,然后從消息隊列中依次取出消息進行相應的處理。,send,消息泵,第一講 Windows 應用程序基礎知識,基本概念,消息與消息循環(huán)消息循環(huán),應用程序為了取得消息隊列中的消息,需要調用Windows提供的一個API函數GetMessage,并利用這個函數的返回值組織一個循環(huán)來不斷獲取消息,一旦獲取到消息,就這把個消息派送給系統(tǒng)。這個循環(huán)叫做消息循環(huán),在Windows應用程序中,消息循環(huán)的代碼如下: while(GetMessage( ,第一講 Windows 應用程序基礎知識,基本概念,第一講 Windows 應用程序基礎知識,基本概念,第一講 Windows 應用程序基礎知識,第一講 Windows 應用程序基礎知識,1.2 Windows應用程序的結構,主函數 消息的處理部分窗口函數,理解Windows系統(tǒng)、主函數、窗口函數之間的關系,對于編寫windows 程序的程序員來講,是極為重要的。主函數和窗口函數都是windows系統(tǒng)來調用的函數。, 程序啟動之后,系統(tǒng)首先調用的主函數,而窗口函數是主函數獲得消息并把消息發(fā)給系統(tǒng)后,由系統(tǒng)調用的函數。, 不同的消息所對應的操作就是由窗口函數完成的。,第一講 Windows 應用程序基礎知識,應用程序結構,主函數,為了與DOS C程序的主函數名稱相區(qū)分,Windows應用程序的主函數名稱為WinMain。主函數主要完成兩個任務: 創(chuàng)建應用程序的界面窗口; 建立前面提到過的消息循環(huán)。 創(chuàng)建應用程序窗口要用到4個API函數(描述窗口屬性的數據結構窗口類、注冊窗口類、創(chuàng)建窗口、顯示窗口); 建立消息循環(huán)要用到3個API函數(GetMessage、Translate、DispatchMessage)。,第一講 Windows 應用程序基礎知識,Windows應用程序的主函數名稱為WinMain。,創(chuàng)建應用程序窗口要用到4個API函數,注冊窗口類、創(chuàng)建窗口、顯示窗口,更新窗口);,建立消息循環(huán)要用到3個API函數(GetMessage、Translate、DispatchMessage)。,應用程序結構,第一講 Windows 應用程序基礎知識,應用程序結構,主函數,TranslateMessage函數功能:該函數將虛擬鍵消息轉換為字符消息。字符消息被寄送到調用線程的消息隊列里,當下一次線程調用函數GetMessage或PeekMessage時被讀出。,DispatchMessage函數功能:該函數調度一個消息給窗口程序。通常調度從GetMessage取得的消息。,GetMessage函數功能:該函數從調用線程的消息隊列里取得一個消息并將其放于指定的結構(&message)。此函數可取得與指定窗口聯(lián)系的消息和由PostThreadMesssge寄送的線程消息。,消息的處理部分窗口函數,第一講 Windows 應用程序基礎知識,應用程序結構,具有窗口界面的Windows應用程序,必須要有一個“窗口函數”,各種消息的處理就是在這里完成的,它是完成用戶任務的核心。 不同的消息所對應的操作就是由窗口函數完成的, windows程序員的工作,就是編寫窗口函數的case代碼。,第一講 Windows 應用程序基礎知識,第一講 Windows 應用程序基礎知識,第一講 Windows 應用程序基礎知識,第一講 Windows 應用程序基礎知識,第一講 Windows 應用程序基礎知識,第一講 Windows 應用程序基礎知識,第一講 Windows 應用程序基礎知識,實例分析,例11:當鼠標左鍵單擊窗口的用戶用戶約時,發(fā)出“?!甭?第一講 Windows 應用程序基礎知識,實例分析,例11:當鼠標左鍵單擊窗口的用戶用戶約時,發(fā)出“叮”聲,第一講 Windows 應用程序基礎知識,實例分析,例11:當鼠標左鍵單擊窗口的用戶用戶約時,發(fā)出“?!甭?第一講 Windows 應用程序基礎知識,實例分析,例11:當鼠標左鍵單擊窗口的用戶用戶約時,發(fā)出“叮”聲,由系統(tǒng)自動生成。,由此開始添加代碼,第一講 Windows 應用程序基礎知識,Windows應用程序的主函數名稱為WinMain。,創(chuàng)建應用程序窗口要用到4個API函數,注冊窗口類、創(chuàng)建窗口、顯示窗口,更新窗口);,建立消息循環(huán)要用到3個API函數(GetMessage、Translate、DispatchMessage)。,應用程序結構,例11:當鼠標左鍵單擊窗口的用戶用戶約時,發(fā)出“?!甭?例11:當鼠標左鍵單擊窗口的用戶區(qū)時,發(fā)出“?!甭?例11:當鼠標左鍵單擊窗口的用戶區(qū)時約時,發(fā)出“?!甭?第一講 Windows 應用程序基礎知識,例1-2 :當鼠標左鍵單擊窗口的用戶區(qū)時,顯示一個字符串“Hello !”,實例分析,Hello!,用C函數封裝的Windows程序.,第一講 Windows 應用程序基礎知識,例1-2 :用C函數封裝的Windows程序,當鼠標左鍵單擊窗口的用戶用戶區(qū)時,顯示一個字符串“Hello !”,實例分析,例1-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論