




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 Windows是一個(gè)多任務(wù)的操作系統(tǒng),是一個(gè)多任務(wù)的操作系統(tǒng),也就是說,在也就是說,在Windows中允許多個(gè)應(yīng)用程中允許多個(gè)應(yīng)用程序同時(shí)運(yùn)行。序同時(shí)運(yùn)行。 在在Windows操作系統(tǒng)上運(yùn)行的應(yīng)用程操作系統(tǒng)上運(yùn)行的應(yīng)用程序叫做序叫做Windows應(yīng)用程序。應(yīng)用程序。 Windows應(yīng)用程序的進(jìn)行是依靠外部應(yīng)用程序的進(jìn)行是依靠外部發(fā)生的事件來驅(qū)動。發(fā)生的事件來驅(qū)動。 程序不斷等待,等待任何可能的輸入,程序不斷等待,等待任何可能的輸入,進(jìn)行判斷后再做適當(dāng)?shù)奶幚?。進(jìn)行判斷后再做適當(dāng)?shù)奶幚怼?下面對下面對Windows編程的基本知識進(jìn)行編程的基本知識進(jìn)行詳細(xì)介紹。詳細(xì)介紹。 Windows界面組成界
2、面組成2.1 Windows應(yīng)用程序的數(shù)據(jù)類型應(yīng)用程序的數(shù)據(jù)類型2.2Windows應(yīng)用程序結(jié)構(gòu)應(yīng)用程序結(jié)構(gòu)2.3Windows編程實(shí)例編程實(shí)例2.42.1 Windows界面組成界面組成 1窗口窗口 2邊框邊框 3標(biāo)題欄標(biāo)題欄 4系統(tǒng)菜單系統(tǒng)菜單 5菜單欄菜單欄 6工具欄工具欄 7客戶區(qū)客戶區(qū) 8狀態(tài)欄狀態(tài)欄 9圖標(biāo)圖標(biāo) 10垂直滾動條和水平滾動條垂直滾動條和水平滾動條 圖圖2.1 窗口窗口 圖圖2.1 窗口窗口2.2 Windows應(yīng)用程序的數(shù)據(jù)類型應(yīng)用程序的數(shù)據(jù)類型 數(shù)據(jù)類型是對數(shù)據(jù)的一種抽象描述。數(shù)據(jù)類型是對數(shù)據(jù)的一種抽象描述。 在計(jì)算機(jī)程序中能操作的數(shù)據(jù)有很多在計(jì)算機(jī)程序中能操作的數(shù)
3、據(jù)有很多種,不同的數(shù)據(jù)所需要的存儲空間有所不種,不同的數(shù)據(jù)所需要的存儲空間有所不同。同。 將數(shù)據(jù)按照類型進(jìn)行分類,有助于程將數(shù)據(jù)按照類型進(jìn)行分類,有助于程序員對于存儲空間的分配。序員對于存儲空間的分配。2.2.1 2.2.1 基本數(shù)據(jù)類型基本數(shù)據(jù)類型 在在Windows應(yīng)用程序中,為了提高應(yīng)應(yīng)用程序中,為了提高應(yīng)用程序的可讀性,用程序的可讀性,Windows為許多基本數(shù)為許多基本數(shù)據(jù)數(shù)定義了別名,例如:據(jù)數(shù)定義了別名,例如: typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char BYTE; typedef fl
4、oat FLOAT; typedet unsigned int UINT; 另外,另外,Windows應(yīng)用程序還提供了一應(yīng)用程序還提供了一些結(jié)構(gòu)類型的數(shù)據(jù),例如:些結(jié)構(gòu)類型的數(shù)據(jù),例如: typedef struct tagMSG HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; MSG; 2.2.2 2.2.2 特殊數(shù)據(jù)類型特殊數(shù)據(jù)類型 在在Windows應(yīng)用程序中,存在著許多應(yīng)用程序中,存在著許多復(fù)雜的程序?qū)ο蠛蛯?shí)例,如窗口、字體、復(fù)雜的程序?qū)ο蠛蛯?shí)例,如窗口、字體、滾動條等。滾動條等。
5、 為了在程序中區(qū)別這些復(fù)雜的程序?qū)榱嗽诔绦蛑袇^(qū)別這些復(fù)雜的程序?qū)ο蠛蛯?shí)例,象和實(shí)例,Windows對它們進(jìn)行了標(biāo)識。對它們進(jìn)行了標(biāo)識。 這種有別于普通變量的標(biāo)識稱為句柄。這種有別于普通變量的標(biāo)識稱為句柄。 2.3 Windows應(yīng)用程序結(jié)構(gòu)應(yīng)用程序結(jié)構(gòu) 一般情況下,一個(gè)一般情況下,一個(gè)Windows應(yīng)用程序應(yīng)用程序由頭文件、源文件、動態(tài)鏈接庫和資源等由頭文件、源文件、動態(tài)鏈接庫和資源等幾部分組成。幾部分組成。 但在這幾個(gè)組成部分中,開發(fā)人員的但在這幾個(gè)組成部分中,開發(fā)人員的主要工作是對源文件進(jìn)行編寫。主要工作是對源文件進(jìn)行編寫。 下面對下面對Windows應(yīng)用程序的源文件進(jìn)應(yīng)用程序的源文件進(jìn)
6、行介紹。行介紹。2.3.1 WinMain2.3.1 WinMain函數(shù)函數(shù) 在傳統(tǒng)的在傳統(tǒng)的DOS程序中,程序中,main()函數(shù)是函數(shù)是程序的入口點(diǎn),而在程序的入口點(diǎn),而在Windows應(yīng)用程序中,應(yīng)用程序中,WinMain()函數(shù)成為了程序的入口點(diǎn)。函數(shù)成為了程序的入口點(diǎn)。 當(dāng)當(dāng)Windows操作系統(tǒng)啟動一個(gè)程序時(shí),操作系統(tǒng)啟動一個(gè)程序時(shí),調(diào)用的就是該程序所對應(yīng)的調(diào)用的就是該程序所對應(yīng)的WinMain()函數(shù)。函數(shù)。 當(dāng)當(dāng)Winmain()函數(shù)結(jié)束或返回時(shí),函數(shù)結(jié)束或返回時(shí),Windows應(yīng)用程序結(jié)束。應(yīng)用程序結(jié)束。 WinMain()函數(shù)的原型如下:函數(shù)的原型如下: int WINAP
7、I WinMain ( HINSTANCE hThisInst, HINSTANCe hPrevInst, LPSTR lpszCmdLine, Int nCmdShow, ) WinMain()函數(shù)的主要作用是創(chuàng)建應(yīng)用函數(shù)的主要作用是創(chuàng)建應(yīng)用程序窗口并建立消息循環(huán)。程序窗口并建立消息循環(huán)。 在該函數(shù)完成此項(xiàng)工作的過程中,經(jīng)在該函數(shù)完成此項(xiàng)工作的過程中,經(jīng)過了過了5個(gè)步驟:設(shè)計(jì)窗口類型、注冊窗口類個(gè)步驟:設(shè)計(jì)窗口類型、注冊窗口類型、創(chuàng)建窗口、顯示窗口和消息循環(huán)。型、創(chuàng)建窗口、顯示窗口和消息循環(huán)。1 1設(shè)計(jì)窗口類型設(shè)計(jì)窗口類型 在創(chuàng)建應(yīng)用程序窗口之前,需要對窗在創(chuàng)建應(yīng)用程序窗口之前,需要對窗口的
8、屬性進(jìn)行相應(yīng)的設(shè)置,如窗口樣式、口的屬性進(jìn)行相應(yīng)的設(shè)置,如窗口樣式、窗口圖樣、窗口光標(biāo)等。窗口圖樣、窗口光標(biāo)等。 在在Windows中,需要在中,需要在WNDCLASS結(jié)構(gòu)中對窗口的屬性進(jìn)行設(shè)置,該結(jié)構(gòu)的結(jié)構(gòu)中對窗口的屬性進(jìn)行設(shè)置,該結(jié)構(gòu)的原型如下:原型如下: typedef struct _WNDCLASS UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTST
9、R lpszMenuName; LPCTSTR lpszClassName; WNDCLASS; 2注冊窗口類型 對窗口類型進(jìn)行設(shè)計(jì)后,需要進(jìn)行注對窗口類型進(jìn)行設(shè)計(jì)后,需要進(jìn)行注冊。冊。 對窗口進(jìn)行注冊就是將設(shè)計(jì)好的窗口對窗口進(jìn)行注冊就是將設(shè)計(jì)好的窗口類型向系統(tǒng)進(jìn)行登記。類型向系統(tǒng)進(jìn)行登記。 注冊窗口類型時(shí)需調(diào)用注冊窗口類型時(shí)需調(diào)用RegisterClass()函數(shù),該函數(shù)的原型如下:函數(shù),該函數(shù)的原型如下: BOOL RegisterClass(WNDCLASSA &wc);3 3創(chuàng)建窗口創(chuàng)建窗口 創(chuàng)建窗口時(shí),需要調(diào)用創(chuàng)建窗口時(shí),需要調(diào)用API函數(shù)函數(shù)CreateWindow()函數(shù),該函數(shù)
10、的原型如下:函數(shù),該函數(shù)的原型如下: HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID lpParam);4 4顯示窗口顯示窗口 調(diào)用調(diào)用ShowWindow()函數(shù)可以顯示窗函數(shù)可以顯示窗口,該函數(shù)的原型如下:口,該函數(shù)的原型如下: BOOL ShowWindow( HWND hWnd, int nCmd
11、Show ); 在顯示窗口后,需要對窗口進(jìn)行刷新在顯示窗口后,需要對窗口進(jìn)行刷新操作。操作。 刷新窗口可以使用刷新窗口可以使用UpdateWindow()函數(shù),該函數(shù)的原型如下:函數(shù),該函數(shù)的原型如下: BOOL UpdateWindow( HWND hWnd);5 5消息循環(huán)消息循環(huán) 創(chuàng)建并顯示窗口后,應(yīng)用程序的初始創(chuàng)建并顯示窗口后,應(yīng)用程序的初始化工作進(jìn)入了消息循環(huán)這一階段。化工作進(jìn)入了消息循環(huán)這一階段。 代碼如下:代碼如下: while (GetMessage(&msg, NULL, 0, 0) TranslateMessage(&msg); DispatchMessage(&msg);
12、 Windows應(yīng)用程序可以接收各種輸入應(yīng)用程序可以接收各種輸入消息,如鍵盤、鼠標(biāo)、計(jì)時(shí)器產(chǎn)生的消息消息,如鍵盤、鼠標(biāo)、計(jì)時(shí)器產(chǎn)生的消息或是由其他應(yīng)用程序傳遞過來的消息等?;蚴怯善渌麘?yīng)用程序傳遞過來的消息等。 接收消息時(shí)使用的是接收消息時(shí)使用的是GetMessage()函函數(shù),該函數(shù)的原型如下:數(shù),該函數(shù)的原型如下: BOOL GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax ); GetMessage()函數(shù)將獲取的消息復(fù)制函數(shù)將獲取的消息復(fù)制到一個(gè)到一個(gè)MSG結(jié)構(gòu)中。結(jié)構(gòu)中。 如果隊(duì)列中沒有
13、任何消息,如果隊(duì)列中沒有任何消息,GetMessage()函數(shù)將一直空閑直到隊(duì)列中函數(shù)將一直空閑直到隊(duì)列中又有消息時(shí)再返回。又有消息時(shí)再返回。 如果隊(duì)列中已有消息,它將取出一個(gè)如果隊(duì)列中已有消息,它將取出一個(gè)后返回。后返回。 MSG結(jié)構(gòu)包含了一條結(jié)構(gòu)包含了一條Windows消息的消息的完整信息,其定義如下:完整信息,其定義如下: HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; MSG; 2.3.2 WndProc 2.3.2 WndProc窗口函數(shù)窗口函數(shù) 在在WinMain()函數(shù)中創(chuàng)建
14、窗口后,然后函數(shù)中創(chuàng)建窗口后,然后需要編寫一個(gè)窗口函數(shù),用于處理發(fā)送給需要編寫一個(gè)窗口函數(shù),用于處理發(fā)送給窗口的消息。窗口的消息。 這個(gè)窗口函數(shù)就是這個(gè)窗口函數(shù)就是WndProc(),該函,該函數(shù)的原型如下:數(shù)的原型如下: LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam); WndProc()函數(shù)由一個(gè)或多個(gè)函數(shù)由一個(gè)或多個(gè)switch語句組成。語句組成。 每一條每一條case語句對應(yīng)一種消息。語句對應(yīng)一種消息。 當(dāng)應(yīng)用程序接收到一個(gè)消息時(shí),相應(yīng)當(dāng)應(yīng)用程序接收到一個(gè)消息時(shí),相應(yīng)的的c
15、ase語句被激活。語句被激活。2.4 Windows編程實(shí)例編程實(shí)例 本節(jié)將通過一個(gè)實(shí)例介紹本節(jié)將通過一個(gè)實(shí)例介紹Windows窗窗口的創(chuàng)建過程??诘膭?chuàng)建過程。 當(dāng)程序創(chuàng)建后,會在客戶區(qū)輸出文本,當(dāng)程序創(chuàng)建后,會在客戶區(qū)輸出文本,并且當(dāng)鼠標(biāo)單擊窗口的客戶區(qū)時(shí),會發(fā)出并且當(dāng)鼠標(biāo)單擊窗口的客戶區(qū)時(shí),會發(fā)出聲音。聲音。 圖圖2.3 輸入工程名輸入工程名圖圖2.4 選擇創(chuàng)建空工程選擇創(chuàng)建空工程圖圖2.5 【New Project Information】對話框?qū)υ捒驁D圖2.6 添加添加C+ Source File圖圖2.7 程序程序sample0201的運(yùn)行結(jié)果的運(yùn)行結(jié)果圖圖2.8 【Project
16、Settings】對話框?qū)υ捒蛐〗Y(jié)小結(jié) 本章主要介紹了本章主要介紹了Windows編程的基礎(chǔ)編程的基礎(chǔ)知識,包括知識,包括Windows應(yīng)用程序界面組成和應(yīng)用程序界面組成和Windows應(yīng)用程序結(jié)構(gòu),并通過一個(gè)實(shí)例應(yīng)用程序結(jié)構(gòu),并通過一個(gè)實(shí)例讓讀者熟悉讓讀者熟悉Windows應(yīng)用程序編程過程。應(yīng)用程序編程過程。 其中,讀者應(yīng)該明確掌握其中,讀者應(yīng)該明確掌握Windows應(yīng)應(yīng)用程序中各個(gè)主要函數(shù)的作用:用程序中各個(gè)主要函數(shù)的作用:WinMain()函數(shù)是一個(gè)程序的入口點(diǎn),而函數(shù)是一個(gè)程序的入口點(diǎn),而WndProc()函數(shù)用于響應(yīng)窗口中的每個(gè)消息。函數(shù)用于響應(yīng)窗口中的每個(gè)消息。 下一章將要向讀者介
17、紹下一章將要向讀者介紹Windows應(yīng)用應(yīng)用程序的類封裝。程序的類封裝。上機(jī)指導(dǎo)上機(jī)指導(dǎo) 實(shí)驗(yàn)一:熟悉實(shí)驗(yàn)一:熟悉Visual C+集成開發(fā)環(huán)境集成開發(fā)環(huán)境 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容 創(chuàng)建一個(gè)名為創(chuàng)建一個(gè)名為myfirst的工程,部分界的工程,部分界面如圖面如圖2.9所示。所示。圖圖2.9 New對話框?qū)υ捒?實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?工欲善其事,必先利其器。工欲善其事,必先利其器。 同樣,想要熟練地編程,首要條件是同樣,想要熟練地編程,首要條件是要熟悉編程環(huán)境。要熟悉編程環(huán)境。 因此本實(shí)驗(yàn)需要讀者快速掌握創(chuàng)建因此本實(shí)驗(yàn)需要讀者快速掌握創(chuàng)建Win32 Application的步驟。的步驟。 實(shí)現(xiàn)思路實(shí)現(xiàn)思路
18、在在2.4節(jié)講述了如何創(chuàng)建一個(gè)節(jié)講述了如何創(chuàng)建一個(gè)Win32 Application實(shí)例。實(shí)例。 按照按照2.4節(jié)講述的順序創(chuàng)建即可。節(jié)講述的順序創(chuàng)建即可。 實(shí)驗(yàn)二:創(chuàng)建一個(gè)實(shí)驗(yàn)二:創(chuàng)建一個(gè)Win32應(yīng)用程序(應(yīng)用程序(1) 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容 創(chuàng)建一個(gè)創(chuàng)建一個(gè)Win32的應(yīng)用程序,程序的運(yùn)的應(yīng)用程序,程序的運(yùn)行結(jié)果如圖行結(jié)果如圖2.10所示。所示。圖圖2.10 實(shí)驗(yàn)二的運(yùn)行結(jié)果實(shí)驗(yàn)二的運(yùn)行結(jié)果 實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?創(chuàng)建一個(gè)標(biāo)題名為創(chuàng)建一個(gè)標(biāo)題名為“上機(jī)指導(dǎo)上機(jī)指導(dǎo)”、窗口、窗口內(nèi)容顯示內(nèi)容顯示“上機(jī)指導(dǎo)上機(jī)指導(dǎo)實(shí)驗(yàn)二實(shí)驗(yàn)二”的的Win32應(yīng)用程序。應(yīng)用程序。 通過該實(shí)驗(yàn),可以理解通過該實(shí)驗(yàn),可以理解Windows應(yīng)用應(yīng)用程序的組成及其創(chuàng)建過程。程序的組成及其創(chuàng)建過程。 實(shí)現(xiàn)思路實(shí)現(xiàn)思路 在在2.4節(jié)講述了如何創(chuàng)建一個(gè)節(jié)講述了如何創(chuàng)建一個(gè)Win32 Application實(shí)例。實(shí)例。 按照按照2.4節(jié)講述的順序創(chuàng)建即可。節(jié)講述的順序創(chuàng)建即可。 但是其中一些必要的代碼需要改動,但是其中一些必要的代碼需要改動,請讀者自己思考。請讀者自己思考。 實(shí)驗(yàn)三:創(chuàng)建一個(gè)實(shí)驗(yàn)三:創(chuàng)建一個(gè)Win32應(yīng)用程序(應(yīng)用程序(2) 創(chuàng)建一個(gè)創(chuàng)建一個(gè)Win32的應(yīng)用程序,程序的運(yùn)的應(yīng)用程序,程序的運(yùn)行結(jié)果如圖行結(jié)果如圖2.11所示。所示。圖圖2.11
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45230-2025數(shù)據(jù)安全技術(shù)機(jī)密計(jì)算通用框架
- 借用林地協(xié)議合同范本
- 包裝紙盒合同范本
- 北京車輛過戶合同范本
- 軍事拓展協(xié)議合同范本
- 企業(yè)價(jià)值咨詢合同范本
- 動產(chǎn)個(gè)人抵押合同范本
- 人工勞務(wù)外包合同范本
- 企業(yè)綠化合同范本
- 農(nóng)業(yè)機(jī)械改裝項(xiàng)目合同范例
- 本科生畢業(yè)論文寫作指導(dǎo)-課件
- 硬質(zhì)巖層組合切割開挖技術(shù)
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級上冊 期末綜合卷(含答案)
- 《商務(wù)溝通-策略、方法與案例》課件 第九章 職場溝通
- 微電網(wǎng)經(jīng)濟(jì)性研究-洞察分析
- 2024年考研管理類綜合能力(199)真題及解析完整版
- 2020-2024年五年高考地理真題分類匯編專題02(地球運(yùn)動)+解析版
- 水文與水資源勘測基礎(chǔ)知識單選題100道及答案解析
- 銷售沙盤演練培訓(xùn)
- 藥物臨床試驗(yàn)倫理審查應(yīng)急預(yù)案
- 書法培訓(xùn)合作合同范例
評論
0/150
提交評論