版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Windows是一個(gè)多任務(wù)的操作系統(tǒng),也就是說,在Windows中允許多個(gè)應(yīng)用程序同時(shí)運(yùn)行。在Windows操作系統(tǒng)上運(yùn)行的應(yīng)用程序叫做Windows應(yīng)用程序。Windows應(yīng)用程序的進(jìn)行是依靠外部發(fā)生的事件來驅(qū)動(dòng)。程序不斷等待,等待任何可能的輸入,進(jìn)行判斷后再做適當(dāng)?shù)奶幚怼O旅鎸?duì)Windows編程的基本知識(shí)進(jìn)行詳細(xì)介紹。
Windows界面組成2.1
Windows應(yīng)用程序的數(shù)據(jù)類型2.2Windows應(yīng)用程序結(jié)構(gòu)2.3Windows編程實(shí)例2.42.1Windows界面組成
1.窗口
2.邊框
3.標(biāo)題欄
4.系統(tǒng)菜單
5.菜單欄
6.工具欄7.客戶區(qū)8.狀態(tài)欄9.圖標(biāo)10.垂直滾動(dòng)條和水平滾動(dòng)條
圖2.1窗口
圖2.1窗口2.2Windows應(yīng)用程序的數(shù)據(jù)類型
數(shù)據(jù)類型是對(duì)數(shù)據(jù)的一種抽象描述。在計(jì)算機(jī)程序中能操作的數(shù)據(jù)有很多種,不同的數(shù)據(jù)所需要的存儲(chǔ)空間有所不同。將數(shù)據(jù)按照類型進(jìn)行分類,有助于程序員對(duì)于存儲(chǔ)空間的分配。2.2.1基本數(shù)據(jù)類型
在Windows應(yīng)用程序中,為了提高應(yīng)用程序的可讀性,Windows為許多基本數(shù)據(jù)數(shù)定義了別名,例如:
typedefunsignedlongDWORD;typedefintBOOL;typedefunsignedcharBYTE;typedeffloatFLOAT;typedetunsignedintUINT;
另外,Windows應(yīng)用程序還提供了一些結(jié)構(gòu)類型的數(shù)據(jù),例如:typedefstructtagMSG{HWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;}MSG;2.2.2特殊數(shù)據(jù)類型
在Windows應(yīng)用程序中,存在著許多復(fù)雜的程序?qū)ο蠛蛯?shí)例,如窗口、字體、滾動(dòng)條等。為了在程序中區(qū)別這些復(fù)雜的程序?qū)ο蠛蛯?shí)例,Windows對(duì)它們進(jìn)行了標(biāo)識(shí)。這種有別于普通變量的標(biāo)識(shí)稱為句柄。
2.3Windows應(yīng)用程序結(jié)構(gòu)
一般情況下,一個(gè)Windows應(yīng)用程序由頭文件、源文件、動(dòng)態(tài)鏈接庫和資源等幾部分組成。但在這幾個(gè)組成部分中,開發(fā)人員的主要工作是對(duì)源文件進(jìn)行編寫。下面對(duì)Windows應(yīng)用程序的源文件進(jìn)行介紹。2.3.1WinMain函數(shù)
在傳統(tǒng)的DOS程序中,main()函數(shù)是程序的入口點(diǎn),而在Windows應(yīng)用程序中,WinMain()函數(shù)成為了程序的入口點(diǎn)。當(dāng)Windows操作系統(tǒng)啟動(dòng)一個(gè)程序時(shí),調(diào)用的就是該程序所對(duì)應(yīng)的WinMain()函數(shù)。當(dāng)Winmain()函數(shù)結(jié)束或返回時(shí),Windows應(yīng)用程序結(jié)束。
WinMain()函數(shù)的原型如下:intWINAPIWinMain(HINSTANCEhThisInst,HINSTANCehPrevInst,LPSTRlpszCmdLine,IntnCmdShow,)
WinMain()函數(shù)的主要作用是創(chuàng)建應(yīng)用程序窗口并建立消息循環(huán)。在該函數(shù)完成此項(xiàng)工作的過程中,經(jīng)過了5個(gè)步驟:設(shè)計(jì)窗口類型、注冊(cè)窗口類型、創(chuàng)建窗口、顯示窗口和消息循環(huán)。1.設(shè)計(jì)窗口類型
在創(chuàng)建應(yīng)用程序窗口之前,需要對(duì)窗口的屬性進(jìn)行相應(yīng)的設(shè)置,如窗口樣式、窗口圖樣、窗口光標(biāo)等。在Windows中,需要在WNDCLASS結(jié)構(gòu)中對(duì)窗口的屬性進(jìn)行設(shè)置,該結(jié)構(gòu)的原型如下:
typedefstruct_WNDCLASS{UINTstyle;WNDPROClpfnWndProc;intcbClsExtra;intcbWndExtra;HINSTANCEhInstance;HICONhIcon;HCURSORhCursor;HBRUSHhbrBackground;LPCTSTRlpszMenuName;LPCTSTRlpszClassName;}WNDCLASS;2.注冊(cè)窗口類型
對(duì)窗口類型進(jìn)行設(shè)計(jì)后,需要進(jìn)行注冊(cè)。對(duì)窗口進(jìn)行注冊(cè)就是將設(shè)計(jì)好的窗口類型向系統(tǒng)進(jìn)行登記。注冊(cè)窗口類型時(shí)需調(diào)用RegisterClass()函數(shù),該函數(shù)的原型如下:
BOOLRegisterClass(WNDCLASSA&wc);3.創(chuàng)建窗口
創(chuàng)建窗口時(shí),需要調(diào)用API函數(shù)CreateWindow()函數(shù),該函數(shù)的原型如下:
HWNDCreateWindow(LPCTSTRlpClassName,LPCTSTRlpWindowName,DWORDdwStyle,intx,inty,intnWidth,intnHeight,HWNDhWndParent,HMENUhMenu,HANDLEhInstance,LPVOIDlpParam);4.顯示窗口
調(diào)用ShowWindow()函數(shù)可以顯示窗口,該函數(shù)的原型如下:
BOOLShowWindow(HWNDhWnd,intnCmdShow);
在顯示窗口后,需要對(duì)窗口進(jìn)行刷新操作。刷新窗口可以使用UpdateWindow()函數(shù),該函數(shù)的原型如下:
BOOLUpdateWindow(HWNDhWnd);5.消息循環(huán)
創(chuàng)建并顯示窗口后,應(yīng)用程序的初始化工作進(jìn)入了消息循環(huán)這一階段。代碼如下:while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg);}
Windows應(yīng)用程序可以接收各種輸入消息,如鍵盤、鼠標(biāo)、計(jì)時(shí)器產(chǎn)生的消息或是由其他應(yīng)用程序傳遞過來的消息等。接收消息時(shí)使用的是GetMessage()函數(shù),該函數(shù)的原型如下:
BOOLGetMessage(LPMSGlpMsg,HWNDhWnd,UINTwMsgFilterMin,UINTwMsgFilterMax);
GetMessage()函數(shù)將獲取的消息復(fù)制到一個(gè)MSG結(jié)構(gòu)中。如果隊(duì)列中沒有任何消息,GetMessage()函數(shù)將一直空閑直到隊(duì)列中又有消息時(shí)再返回。
如果隊(duì)列中已有消息,它將取出一個(gè)后返回。
MSG結(jié)構(gòu)包含了一條Windows消息的完整信息,其定義如下:
HWNDhwnd;UINTmessage;WPARAMwParam;LPARAMlParam;DWORDtime;POINTpt;}MSG;2.3.2WndProc窗口函數(shù)
在WinMain()函數(shù)中創(chuàng)建窗口后,然后需要編寫一個(gè)窗口函數(shù),用于處理發(fā)送給窗口的消息。
這個(gè)窗口函數(shù)就是WndProc(),該函數(shù)的原型如下:LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam);
WndProc()函數(shù)由一個(gè)或多個(gè)switch語句組成。每一條case語句對(duì)應(yīng)一種消息。當(dāng)應(yīng)用程序接收到一個(gè)消息時(shí),相應(yīng)的case語句被激活。2.4Windows編程實(shí)例
本節(jié)將通過一個(gè)實(shí)例介紹Windows窗口的創(chuàng)建過程。當(dāng)程序創(chuàng)建后,會(huì)在客戶區(qū)輸出文本,并且當(dāng)鼠標(biāo)單擊窗口的客戶區(qū)時(shí),會(huì)發(fā)出聲音。圖2.3輸入工程名圖2.4選擇創(chuàng)建空工程圖2.5【NewProjectInformation】對(duì)話框圖2.6添加C++SourceFile圖2.7程序sample0201的運(yùn)行結(jié)果圖2.8【ProjectSettings】對(duì)話框小結(jié)
本章主要介紹了Windows編程的基礎(chǔ)知識(shí),包括Windows應(yīng)用程序界面組成和Windows應(yīng)用程序結(jié)構(gòu),并通過一個(gè)實(shí)例讓讀者熟悉Windows應(yīng)用程序編程過程。其中,讀者應(yīng)該明確掌握Windows應(yīng)用程序中各個(gè)主要函數(shù)的作用:WinMain()函數(shù)是一個(gè)程序的入口點(diǎn),而WndProc()函數(shù)用于響應(yīng)窗口中的每個(gè)消息。下一章將要向讀者介紹Windows應(yīng)用程序的類封裝。上機(jī)指導(dǎo)實(shí)驗(yàn)一:熟悉VisualC++集成開發(fā)環(huán)境實(shí)驗(yàn)內(nèi)容創(chuàng)建一個(gè)名為myfirst的工程,部分界面如圖2.9所示。圖2.9New對(duì)話框
實(shí)驗(yàn)?zāi)康墓び破涫?,必先利其器。同樣,想要熟練地編程,首要條件是要熟悉編程環(huán)境。因此本實(shí)驗(yàn)需要讀者快速掌握創(chuàng)建Win32Application的步驟。
實(shí)現(xiàn)思路在2.4節(jié)講述了如何創(chuàng)建一個(gè)Win32Application實(shí)例。按照2.4節(jié)講述的順序創(chuàng)建即可。實(shí)驗(yàn)二:創(chuàng)建一個(gè)Win32應(yīng)用程序(1)實(shí)驗(yàn)內(nèi)容創(chuàng)建一個(gè)Win32的應(yīng)用程序,程序的運(yùn)行結(jié)果如圖2.10所示。圖2.10實(shí)驗(yàn)二的運(yùn)行結(jié)果
實(shí)驗(yàn)?zāi)康膭?chuàng)建一個(gè)標(biāo)題名為“上機(jī)指導(dǎo)”、窗口內(nèi)容顯示“上機(jī)指導(dǎo)——實(shí)驗(yàn)二”的Win32應(yīng)用程序。通過該實(shí)驗(yàn),可以理解Windows應(yīng)用程序的組成及其創(chuàng)建過程。
實(shí)現(xiàn)思路在2.4節(jié)講述了如何創(chuàng)建一個(gè)Win32Application實(shí)例。按照2.4節(jié)講述的順序創(chuàng)建即可。但是其中一些必要的代碼需要改動(dòng),請(qǐng)讀者自己思考。實(shí)驗(yàn)三:創(chuàng)建一個(gè)Win32應(yīng)用程序(2)創(chuàng)建一個(gè)Win32的應(yīng)用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廠房出租安全風(fēng)險(xiǎn)評(píng)估與報(bào)告協(xié)議4篇
- 個(gè)人信用貸款協(xié)議范本(2024年版)版B版
- 論文寫作全攻略
- 2025年度國際貿(mào)易代理風(fēng)險(xiǎn)控制合同范本4篇
- 2025年度高端裝備制造廠區(qū)租賃合同協(xié)議4篇
- 2025年度醫(yī)療設(shè)施場地租賃合同范本6篇
- 2025年度常年法律顧問服務(wù)合同企業(yè)勞動(dòng)爭議解決報(bào)價(jià)4篇
- 專項(xiàng)經(jīng)濟(jì)分析與信息咨詢服務(wù)協(xié)議版B版
- 2024經(jīng)濟(jì)中介服務(wù)合同格式
- 2025年度環(huán)保設(shè)備銷售與環(huán)保技術(shù)服務(wù)合同4篇
- 增強(qiáng)現(xiàn)實(shí)技術(shù)在藝術(shù)教育中的應(yīng)用
- TD/T 1060-2021 自然資源分等定級(jí)通則(正式版)
- 《創(chuàng)傷失血性休克中國急診專家共識(shí)(2023)》解讀
- 倉庫智能化建設(shè)方案
- 海外市場開拓計(jì)劃
- 2024年度國家社會(huì)科學(xué)基金項(xiàng)目課題指南
- 供應(yīng)鏈組織架構(gòu)與職能設(shè)置
- 幼兒數(shù)學(xué)益智圖形連線題100題(含完整答案)
- 七上-動(dòng)點(diǎn)、動(dòng)角問題12道好題-解析
- 2024年九省聯(lián)考新高考 數(shù)學(xué)試卷(含答案解析)
- 紅色歷史研學(xué)旅行課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論