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