VisualC輕松入門(mén)第10章Windows應(yīng)用程序介紹.ppt
《VisualC輕松入門(mén)第10章Windows應(yīng)用程序介紹.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《VisualC輕松入門(mén)第10章Windows應(yīng)用程序介紹.ppt(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第10章Windows應(yīng)用程序介紹,Windows是Microsoft公司的主打軟件產(chǎn)品,屬于操作系統(tǒng)的一種,而VisualC++6.0也是Microsoft公司的軟件產(chǎn)品,是當(dāng)今主流集成開(kāi)發(fā)環(huán)境之一。由于都出自同一個(gè)公司,因此VisualC++6.0對(duì)基于Windows的應(yīng)用軟件具有很高的開(kāi)發(fā)兼容性。特別是MFC類(lèi)庫(kù),它幾乎就是為Windows應(yīng)用軟件量身定做的一套類(lèi)庫(kù)框架體系。本章介紹Windows應(yīng)用程序的類(lèi)型,讓讀者能概要的了解Windows軟件的種類(lèi)和特點(diǎn),本章主要修行的要點(diǎn)如下。Windows應(yīng)用程序和MS-DOS風(fēng)格應(yīng)用程序:讀者將了解到Windows應(yīng)用程序和MS-DOS風(fēng)格應(yīng)用程序的聯(lián)系與區(qū)別。應(yīng)用程序的類(lèi)型:讀者將了解到各種Windows應(yīng)用程序的類(lèi)型,如Win32應(yīng)用程序、對(duì)話(huà)框應(yīng)用程序、動(dòng)態(tài)鏈接庫(kù)、單文檔應(yīng)用程序(SDI)、多文檔應(yīng)用程序(MDI)。MFC應(yīng)用程序向?qū)У墓δ埽鹤x者將學(xué)會(huì)MFC應(yīng)用程序向?qū)е械乃泄δ?,讓讀者了解MFC應(yīng)用程序向?qū)?huì)給我們帶來(lái)怎么樣的應(yīng)用程序框架。,10.1Windows應(yīng)用程序和MS-DOS風(fēng)格應(yīng)用程序,Windows,顧名思義就是窗口,而后面有個(gè)“s”,也就是復(fù)數(shù),那么自然而然就是“多窗口”,但“Windows應(yīng)用程序”并不是多窗口應(yīng)用程序的意思,而是運(yùn)行Windows操作系統(tǒng)上的應(yīng)用程序。Windows操作系統(tǒng)也是一個(gè)軟件,只是這個(gè)軟件地位比較高,是硬件和應(yīng)用軟件的承載體,稱(chēng)之為“操作系統(tǒng)”,它負(fù)責(zé)為一般的應(yīng)用軟件分配CPU時(shí)間、分配內(nèi)存容量和內(nèi)存存放時(shí)間、分配硬件資源(如是否申請(qǐng)打印機(jī)、掃描儀、音響等),而這個(gè)操作系統(tǒng)“軟件”本身是多窗口的,也就是說(shuō)你可以輕松地享受著柔和的mp3音樂(lè),同時(shí)和親朋好友聊著QQ,并且還可以同時(shí)收看網(wǎng)絡(luò)電視體育臺(tái)的MBA賽事。事實(shí)上,這里的操作系統(tǒng)就實(shí)現(xiàn)了多道程序設(shè)計(jì)的設(shè)計(jì)理念,雖然CPU只有一個(gè),而且在任意時(shí)間點(diǎn)時(shí),CPU只能處理一個(gè)作業(yè),但CPU處理速度非???,所以可以將CPU的計(jì)劃時(shí)間段分成若干個(gè)“時(shí)間片段”,又稱(chēng)之為“時(shí)間片”,假設(shè)CPU有計(jì)劃時(shí)間是1妙(1s),如果為完成當(dāng)前10個(gè)作業(yè)分成10個(gè)時(shí)間片,則某個(gè)時(shí)間片是0.1s,也就是每個(gè)作業(yè)可以分配0.1s的處理時(shí)間,執(zhí)行完一個(gè)時(shí)間片就馬上跳入到下個(gè)作業(yè)的處理。,10.2應(yīng)用程序的類(lèi)型,應(yīng)用程序如果按照功能分,可以分為無(wú)數(shù)種,如企業(yè)財(cái)務(wù)系統(tǒng)、通信系統(tǒng)、人工智能和專(zhuān)家系統(tǒng)、印刷管理系統(tǒng)……。如果按照框架接口和界面分類(lèi),則方便地多,而且對(duì)于程序設(shè)計(jì)語(yǔ)言學(xué)習(xí)者來(lái)說(shuō),不可能面向業(yè)務(wù)去學(xué)具有具體業(yè)務(wù)流程的信息化項(xiàng)目開(kāi)發(fā),因此,了解應(yīng)用程序類(lèi)型是學(xué)習(xí)集成開(kāi)發(fā)環(huán)境的重要基礎(chǔ)。,10.2.1應(yīng)用程序的類(lèi)型簡(jiǎn)介,應(yīng)用程序可以按照多種分類(lèi)方式:按照業(yè)務(wù)類(lèi)型分類(lèi)、按照應(yīng)用領(lǐng)域分類(lèi)、按照框架接口和界面分類(lèi)等。本書(shū)并不是某個(gè)專(zhuān)業(yè)業(yè)務(wù)領(lǐng)域的書(shū)籍,著重讓讀者掌握VisualC++6.0集成開(kāi)發(fā)環(huán)境和C++編程語(yǔ)言,因此,只需要讀者按照框架接口和界面分類(lèi)來(lái)掌握各種程序設(shè)計(jì)即可。應(yīng)用程序按照框架接口和界面可以分為以下幾種類(lèi)型:Win32應(yīng)用程序:Win32應(yīng)用程序原本是指運(yùn)行在Windows操作系統(tǒng)32位計(jì)算機(jī)平臺(tái)上的應(yīng)用程序,當(dāng)然,其他幾個(gè)種類(lèi)的應(yīng)用程序也是運(yùn)行在這種環(huán)境下。狹義的Win32應(yīng)用程序是指不使用MFC類(lèi)庫(kù)而直接使用Win32SDK編寫(xiě)的應(yīng)用程序。對(duì)話(huà)框應(yīng)用程序:對(duì)話(huà)框應(yīng)用程序是MFC應(yīng)用程序的一個(gè)分支,它的特點(diǎn)是只有一個(gè)或多個(gè)對(duì)話(huà)框,而沒(méi)有文檔視圖結(jié)構(gòu)。動(dòng)態(tài)鏈接庫(kù):動(dòng)態(tài)鏈接庫(kù)是Windows程序中常使用的組件,編寫(xiě)Windows動(dòng)態(tài)鏈接庫(kù)(WindowsDLL)可以讓多個(gè)程序共享相同功能的代碼。單文檔應(yīng)用程序(SDI):對(duì)話(huà)框應(yīng)用程序是MFC應(yīng)用程序的一個(gè)分支,它相對(duì)于對(duì)話(huà)框應(yīng)用程序具有單文檔視圖結(jié)構(gòu),并且可以生成對(duì)話(huà)框。多文檔應(yīng)用程序(MDI):對(duì)話(huà)框應(yīng)用程序是MFC應(yīng)用程序的一個(gè)分支,它相對(duì)于對(duì)話(huà)框應(yīng)用程序具有多個(gè)文檔視圖結(jié)構(gòu),也可以生成對(duì)話(huà)框。,10.2.2什么樣的程序是Win32應(yīng)用程序,在Windows1.0版本的時(shí)代,Windows本身的功能很少,并且Windows軟件非常少,如果單靠Microsoft公司自行開(kāi)發(fā)軟件,顯然是不可取的,原因在于應(yīng)用軟件的需求各異,而且要求種類(lèi)繁多,另外,有些應(yīng)用軟件比操作系統(tǒng)本身更復(fù)雜,如大型的數(shù)據(jù)庫(kù)系統(tǒng)等。聰明的Microsoft公司的智囊們當(dāng)然不會(huì)選擇自己開(kāi)發(fā)應(yīng)用軟件。如果將應(yīng)用軟件集成到操作系統(tǒng)中如何?顯然,這樣更不可取,這樣的操作系統(tǒng)非常龐大,大到幾百GB的硬盤(pán)都可能放不下,因此,到目前為止,我們使用的WindowsXP或WindowsVista操作系統(tǒng)雖然有自帶的應(yīng)用軟件,如計(jì)算器、文檔編輯器、畫(huà)圖工具等,但這些軟件都小之又小,簡(jiǎn)單得不能再簡(jiǎn)單。操作系統(tǒng)一般有兩種接口:一個(gè)是鍵盤(pán)鼠標(biāo)操作接口,一個(gè)是應(yīng)用程序接口。前者是為系統(tǒng)使用的用戶(hù)提供操作計(jì)算機(jī)的接口,后者是為程序設(shè)計(jì)人員操作計(jì)算機(jī)而提供的接口。同樣的道理,為了讓其他軟件公司能在Windows環(huán)境下編程,Microsoft公司也提供了Windows應(yīng)用程序接口,實(shí)際上,這些接口就是一千多個(gè)函數(shù)集合,只要軟件公司具有一個(gè)與Windows操作系統(tǒng)兼容的編譯器,并熟練掌握這一千多個(gè)函數(shù)就可以在Windows環(huán)境下進(jìn)行任意應(yīng)用軟件的開(kāi)發(fā)。,10.3認(rèn)識(shí)打印“Hello,world!”字符串的Win32應(yīng)用程序,【本節(jié)示例參考:\源代碼\C10\myWin32】使用VisualC++6.0來(lái)創(chuàng)建Win32應(yīng)用程序比較簡(jiǎn)單,在向?qū)е锌蓜?chuàng)建3種Win32應(yīng)用程序:空項(xiàng)目、簡(jiǎn)單的Win32應(yīng)用程序和打印“Hello,world!”字符串的程序。本節(jié)主要了解這3種程序的組成和效果。,10.3.1創(chuàng)建打印“Hello,world!”字符串的程序,本案例將創(chuàng)建一個(gè)打印“Hello,world!”字符串的程序,具體的操作步驟如下所示。,10.3.2分析Win32應(yīng)用程序的必要結(jié)構(gòu),讀者可以打開(kāi)“myWin32”項(xiàng)目的“myWin32.cpp”源文件,可以看出,Win32應(yīng)用程序中,主要是3個(gè)必要的函數(shù):1.intWINAPIWinMain(HINSTANCEhinstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow),該函數(shù)是Win32應(yīng)用程序入口的主函數(shù)。2.HWNDCreateWindowEx()。該函數(shù)用于創(chuàng)建窗體。當(dāng)然,這不同于MFC,窗口讓開(kāi)發(fā)者作出選擇。該窗口的創(chuàng)建參數(shù)根據(jù)開(kāi)發(fā)者的需要進(jìn)行參數(shù)初始化。3.LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)。正如前文所述,創(chuàng)建好初始化的窗口后,需要有函數(shù)來(lái)進(jìn)行判斷當(dāng)前系統(tǒng)或用戶(hù)程序產(chǎn)生的消息。這個(gè)函數(shù)的功能正是如此。這個(gè)函數(shù)的“內(nèi)在結(jié)構(gòu)”非常簡(jiǎn)單,就是一個(gè)開(kāi)關(guān)語(yǔ)句(Switch),針對(duì)不同的消息類(lèi)型,進(jìn)入不同的處理段。,10.3.3分析Win32應(yīng)用程序中函數(shù)的關(guān)系和互動(dòng),Win32應(yīng)用程序中那么多函數(shù),它們之間是怎么相互協(xié)調(diào)工作的呢?在這里,不能僅僅將它們看作是“函數(shù)與函數(shù)之間的內(nèi)部關(guān)系”,而應(yīng)該將它們看做是它們之間的內(nèi)部關(guān)系以及它們與操作系統(tǒng)的關(guān)系之和。Microsoft公司將Win32應(yīng)用程序開(kāi)發(fā)接口定義為面向過(guò)程并基于消息的,也就是按照操作系統(tǒng)作業(yè)排序的思想,將外界以及操作系統(tǒng)本身對(duì)應(yīng)用程序產(chǎn)生的消息進(jìn)行加權(quán)排序,形成消息隊(duì)列,并在應(yīng)用程序體進(jìn)行循環(huán)監(jiān)聽(tīng)。對(duì)于滿(mǎn)足處理?xiàng)l件的消息進(jìn)行及時(shí)的處理,對(duì)于不滿(mǎn)足條件的消息進(jìn)行排隊(duì)等待,它們之間的關(guān)系如圖10.7所示。,10.3.4更改Win32程序的默認(rèn)代碼實(shí)現(xiàn)自己的功能,在Win32程序中處理消息隊(duì)列的函數(shù)就是“窗口函數(shù)”WndProc(),如代碼示例10.1所示,窗口函數(shù)是負(fù)責(zé)分類(lèi)處理各種消息的函數(shù),如菜單命令消息、鼠標(biāo)鍵盤(pán)消息等。,10.3.5創(chuàng)建空項(xiàng)目和簡(jiǎn)單的Win32應(yīng)用程序,如果創(chuàng)建Win32程序時(shí)選擇的類(lèi)型為“Anemptyproject”,則開(kāi)發(fā)工作區(qū)如圖10.12所示。該項(xiàng)目是空項(xiàng)目,因此沒(méi)有任何源文件、頭文件或資源文件,如果有,則在對(duì)應(yīng)的文件夾左邊有個(gè)“+”或“-”符號(hào),如圖10.12所示。如果在創(chuàng)建Win32程序時(shí)選擇的是“AsimpleWin32application”,則將出現(xiàn)如圖10.13所示的工作界面。,10.4創(chuàng)建Win32Console應(yīng)用程序,Win32Console應(yīng)用程序一般稱(chēng)為控制臺(tái)應(yīng)用程序,界面和DOS類(lèi)似。因?yàn)闆](méi)有常見(jiàn)的一些功能性界面,所以初學(xué)者應(yīng)用起來(lái)比較簡(jiǎn)單,就是倆功能:輸入、輸出。【本節(jié)示例參考:\源代碼\C10\myWin32Console】,10.4.1創(chuàng)建Win32控制臺(tái)應(yīng)用程序,前面學(xué)習(xí)了Win32應(yīng)用程序,現(xiàn)在學(xué)習(xí)Win32Console應(yīng)用程序,它是Win32控制臺(tái)應(yīng)用程序,創(chuàng)建步驟如下:,10.4.2分析Win32控制臺(tái)應(yīng)用程序的代碼和必要組成,“A“Hello,world”application”應(yīng)用程序的代碼比較簡(jiǎn)單,只是用C語(yǔ)言風(fēng)格的printf語(yǔ)句打印“Hello,world!”字符串,如代碼示例10.3所示。,10.5對(duì)話(huà)框應(yīng)用程序,【本節(jié)示例參考:\源代碼\C10\MFCDialog】對(duì)話(huà)框應(yīng)用程序可以由Win32應(yīng)用程序向?qū)?chuàng)建,也可以由MFC應(yīng)用程序創(chuàng)建,但使用MFC更簡(jiǎn)單,因此本書(shū)的對(duì)話(huà)框都是基于MFC庫(kù)的。,10.5.1創(chuàng)建對(duì)話(huà)框MFC應(yīng)用程序,創(chuàng)建對(duì)話(huà)框MFC應(yīng)用程序的步驟如下:,10.5.2分析對(duì)話(huà)框MFC應(yīng)用程序的代碼,基于對(duì)話(huà)框應(yīng)用程序的代碼與以往學(xué)習(xí)的單純的C++代碼不同,和Win32應(yīng)用程序類(lèi)似,框架是代碼生成的,但對(duì)話(huà)框是資源,由資源編輯器進(jìn)行編輯,最后才由連接器將資源和源代碼編譯的結(jié)果連接起來(lái)。雖然兩者好像互不相干,但在應(yīng)用程序運(yùn)行時(shí),需要對(duì)話(huà)框上面的各種編輯框和源代碼中的變量值進(jìn)行交互,而且這種交互是非常頻繁的。因此注定了要在源代碼中指定關(guān)聯(lián)的資源,該對(duì)話(huà)框應(yīng)用程序的對(duì)話(huà)框類(lèi)代碼,如代碼示例10.5所示。,10.6動(dòng)態(tài)鏈接庫(kù),【本節(jié)示例參考:\源代碼\C10\MFCDLL】動(dòng)態(tài)鏈接庫(kù)在Windows系統(tǒng)中很常見(jiàn),讀者只要找到對(duì)應(yīng)操作系統(tǒng)的system32文件夾就可以發(fā)現(xiàn)有大量的以“.dll”為后綴的文件,這些文件就是動(dòng)態(tài)鏈接庫(kù)文件。,10.6.1動(dòng)態(tài)鏈接庫(kù)的優(yōu)點(diǎn)和缺點(diǎn),動(dòng)態(tài)鏈接庫(kù)可以提供給應(yīng)用程序或操作系統(tǒng)一些編譯過(guò)的二進(jìn)制功能代碼,例如說(shuō)執(zhí)行某個(gè)功能的函數(shù)、調(diào)用某些程序的中介代碼,下面介紹使用動(dòng)態(tài)鏈接庫(kù)的優(yōu)點(diǎn)??梢詼p小應(yīng)用程序的容量。一般而言,如果應(yīng)用程序不調(diào)用任何動(dòng)態(tài)鏈接庫(kù)文件,則需要自己實(shí)現(xiàn)全部的功能邏輯,這樣,代碼自然就比部分功能調(diào)用動(dòng)態(tài)鏈接庫(kù)要多。減小操作系統(tǒng)的負(fù)擔(dān),如動(dòng)態(tài)鏈接庫(kù)某個(gè)函數(shù)功能被100個(gè)應(yīng)用程序所調(diào)用,那么,操作系統(tǒng)實(shí)際只需要管理動(dòng)態(tài)鏈接庫(kù)一個(gè)版本即可。反之,如果這100個(gè)應(yīng)用程序各自實(shí)現(xiàn)自己的該函數(shù)功能,則操作系統(tǒng)負(fù)擔(dān)將大大增加。當(dāng)然,沒(méi)有什么事物是只有優(yōu)點(diǎn)沒(méi)有缺點(diǎn)的,使用動(dòng)態(tài)鏈接庫(kù)也會(huì)有缺點(diǎn),就是如果某軟件需要調(diào)用的動(dòng)態(tài)鏈接庫(kù)損壞或丟失,將可以導(dǎo)致該軟件啟動(dòng)失敗,或該軟件執(zhí)行不了部分功能,從這一方面來(lái)說(shuō),削弱了軟件的健壯性。,10.6.2創(chuàng)建具有兩個(gè)數(shù)相乘的函數(shù)動(dòng)態(tài)鏈接庫(kù),本節(jié)將創(chuàng)建具有兩個(gè)數(shù)相乘的函數(shù)動(dòng)態(tài)鏈接庫(kù)文件,并在VBScript中調(diào)用這個(gè)文件,使用兩個(gè)數(shù)相乘的功能,創(chuàng)建動(dòng)態(tài)鏈接庫(kù)的步驟如下:,10.7單文檔應(yīng)用程序(SDI),【本節(jié)示例參考:\源代碼\C10\MFCSingleDoc】本書(shū)中的范例出現(xiàn)最多的將會(huì)是單文檔應(yīng)用程序了。本書(shū)所說(shuō)的單文檔應(yīng)用程序是指由MFC類(lèi)庫(kù)框架生成的單文檔應(yīng)用程序,單文檔應(yīng)用程序的創(chuàng)建過(guò)程如下:,10.8多文檔應(yīng)用程序(MDI),【本小節(jié)示例參考:\源代碼\C10\MFCMutiD】多文檔應(yīng)用程序是單文檔應(yīng)用程序的擴(kuò)展,即一個(gè)應(yīng)用程序有多個(gè)文檔類(lèi)。創(chuàng)建多文檔應(yīng)用程序步的驟如下:,10.9MFC應(yīng)用程序向?qū)У墓δ?【本節(jié)示例參考:\源代碼\C10\myMFC】MFC是學(xué)習(xí)VisualC++的最重要是學(xué)習(xí)類(lèi)庫(kù)框架,而MFC應(yīng)用程序向?qū)⒔o開(kāi)發(fā)者帶來(lái)快速創(chuàng)建某特定應(yīng)用方向的程序系統(tǒng)。因此,了解MFC應(yīng)用程序向?qū)Э梢詭椭x者少走彎路,直接創(chuàng)建具備各種基本功能的應(yīng)用程序框架,而需要具體的功能實(shí)現(xiàn),再在已生成的應(yīng)用程序框架中添加自定義的功能代碼。本節(jié)以單文檔應(yīng)用程序?yàn)槔?,從使用?yīng)用程序向?qū)?lái)講解應(yīng)用程序向?qū)У墓δ?,?chuàng)建一個(gè)應(yīng)用程序的步驟如下:,10.10小結(jié),本章概要性地介紹了Windows應(yīng)用程序和MS-DOS應(yīng)用程序的區(qū)別,并詳細(xì)地介紹了Windows應(yīng)用程序的種類(lèi)和特點(diǎn),還介紹了MFC應(yīng)用程序向?qū)Э梢酝瓿傻墓δ堋Mㄟ^(guò)本章的學(xué)習(xí),讀者應(yīng)該掌握的內(nèi)容如下:理解Windows應(yīng)用程序和MS-DOS風(fēng)格應(yīng)用程序的聯(lián)系與區(qū)別。了解各種Windows應(yīng)用程序的類(lèi)型,如Win32應(yīng)用程序、對(duì)話(huà)框應(yīng)用程序、動(dòng)態(tài)鏈接庫(kù)、單文檔應(yīng)用程序(SDI)、多文檔應(yīng)用程序(MDI),并掌握它們的特點(diǎn)和相互之間的區(qū)別與聯(lián)系。掌握MFC應(yīng)用程序向?qū)е械乃泄δ?,了解MFC應(yīng)用程序向?qū)Э赡芙o我們帶來(lái)怎樣的應(yīng)用程序框架。,本章習(xí)題,一、填空題1.MFC應(yīng)用程序主要有3種類(lèi)型:________________、________________和________________。2.VisualC++6.0可以編譯的語(yǔ)言有:________________和________________。二、選擇題1.在以下說(shuō)法中,正確的是()。A.VisualC++6.0可以編譯JAVA程序設(shè)計(jì)語(yǔ)言。B.VisualC++6.0只是一個(gè)編譯器。C.MFC是類(lèi)庫(kù)。D.VisualC++6.0是微軟公司的Visualstdio集成開(kāi)發(fā)環(huán)境的最高版本。2.在以下說(shuō)法中,正確的是()。A.自然語(yǔ)言能夠描述的,C++就可以描述。B.C++可以描述的,自然語(yǔ)言就能夠描述。C.只要是VisualC++6.0編譯通過(guò)的C++代碼就必定是正確的代碼。D.VisualC++6.0可以檢驗(yàn)C++程序設(shè)計(jì)中所有的錯(cuò)誤。,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- VisualC 輕松 門(mén)第 10 Windows 應(yīng)用程序 介紹
鏈接地址:http://ioszen.com/p-3220658.html