《面向?qū)ο骔indows編程技術(shù)》實(shí)驗(yàn)指導(dǎo)書 信息.doc_第1頁(yè)
《面向?qū)ο骔indows編程技術(shù)》實(shí)驗(yàn)指導(dǎo)書 信息.doc_第2頁(yè)
《面向?qū)ο骔indows編程技術(shù)》實(shí)驗(yàn)指導(dǎo)書 信息.doc_第3頁(yè)
《面向?qū)ο骔indows編程技術(shù)》實(shí)驗(yàn)指導(dǎo)書 信息.doc_第4頁(yè)
《面向?qū)ο骔indows編程技術(shù)》實(shí)驗(yàn)指導(dǎo)書 信息.doc_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目 錄第一章 VC開發(fā)環(huán)境簡(jiǎn)介31.1 熟悉Visual C+實(shí)驗(yàn)環(huán)境31.2 VC+6.0的使用控制臺(tái)應(yīng)用41.3 Windows應(yīng)用101.4 編寫簡(jiǎn)單的計(jì)算程序15第二章 實(shí)驗(yàn)內(nèi)容安排18第三章 實(shí)驗(yàn)要求、評(píng)分標(biāo)準(zhǔn)19第四章 實(shí)驗(yàn)內(nèi)容20實(shí)驗(yàn)一 C/C+程序初步20實(shí)驗(yàn)二面向?qū)ο缶幊虒?shí)踐22實(shí)驗(yàn)三 MFC控件編程實(shí)踐24實(shí)驗(yàn)四 文件的操作26實(shí)驗(yàn)五 MFC綜合編程29第一章 VC開發(fā)環(huán)境簡(jiǎn)介本章將簡(jiǎn)要介紹Visual C+開發(fā)環(huán)境的一些知識(shí),并嘗試實(shí)現(xiàn)一個(gè)簡(jiǎn)單的DOS程序和Windows程序。通過本次實(shí)驗(yàn),你可以了解用Visual C+開發(fā)C+應(yīng)用程序的過程。 1.1 熟悉Visual C+實(shí)驗(yàn)環(huán)境步驟(1) 啟動(dòng)Developer Studio,看看初始化界面由哪些部分組成(2) 查看各菜單項(xiàng),看看都有哪些子菜單和命令(3) 將鼠標(biāo)放置于各工具條圖標(biāo)上,系統(tǒng)會(huì)自動(dòng)顯示該圖標(biāo)代表的命令含義,了解一下都有哪些命令。 (4) 在任意工具條上單擊鼠標(biāo)右鍵,彈出式菜單上將顯示所有可用的工具條,選擇其中沒有對(duì)號(hào)()的項(xiàng),看看有什么效果,再選擇有對(duì)號(hào)的項(xiàng),又有什么效果?(5) 將鼠標(biāo)移動(dòng)到任意工具條上,將鼠標(biāo)放到圖標(biāo)間隙,按下鼠標(biāo)左鍵不放,移動(dòng)鼠標(biāo)到屏幕中間,有什么現(xiàn)象發(fā)生?再將它拖回到原來位置,有什么現(xiàn)象發(fā)生? (6) 將鼠標(biāo)移動(dòng)到左邊的工作區(qū)窗口,按下鼠標(biāo)左鍵不放,移動(dòng)鼠標(biāo)到屏幕中間,有什么現(xiàn)象發(fā)生?再將它拖回到原來位置,有什么現(xiàn)象發(fā)生?(7) 將鼠標(biāo)移動(dòng)到下邊的輸出窗口,按鼠標(biāo)右鍵,彈出一個(gè)菜單,選擇其中的菜單項(xiàng)Hide,結(jié)果如何?要重新顯示該窗口,選擇菜單View|Output,窗口是不是又顯示出來了? (8) 學(xué)習(xí)使用幫助系統(tǒng)。如果你用的是Visual C+5.0,則在工作區(qū)窗口的InfoView中選擇你感興趣的內(nèi)容,雙擊它,在文檔區(qū)顯示具體的幫助信息。如果你用的是Visual C+6.0,選擇菜單Help|Contents,啟動(dòng)MSDN聯(lián)機(jī)幫助系統(tǒng),學(xué)習(xí)使用該幫助系統(tǒng)。聯(lián)機(jī)幫助系統(tǒng)是一個(gè)相對(duì)獨(dú)立的程序,它和Developer Studio是兩個(gè)程序,但是它的啟動(dòng)和停止都受Developer Studio影響。MSDN聯(lián)機(jī)幫助系統(tǒng)運(yùn)行的前提條件是Developer Studio在運(yùn)行。 (9) 選File|Exit退出Developer Studio。1.2 VC+6.0的使用控制臺(tái)應(yīng)用1. 新建一個(gè)項(xiàng)目。單擊File,彈出圖1如下:圖1點(diǎn)擊New后彈出如下對(duì)話框:圖2在圖2中的Projects標(biāo)簽下選擇Win32 Console Application,在右邊的Project name輸入框中輸入你的項(xiàng)目名稱(此例中我們把項(xiàng)目名稱取為FirsPro),在中通過點(diǎn)擊可以選擇項(xiàng)目的保存位置。注意要選中單選按鈕,然后點(diǎn)擊下面的,彈出如下對(duì)話框:圖3點(diǎn)擊按鈕,再在隨后彈出的對(duì)話框中點(diǎn)擊“OK”按鈕就建好了一個(gè)新項(xiàng)目了。2. 在項(xiàng)目中添加c+源文件。點(diǎn)擊如圖4中的,展現(xiàn)項(xiàng)目的文件視圖。圖4點(diǎn)擊菜單中的File,在彈出的菜單中點(diǎn)擊New,彈出圖2,在圖2中,選擇File標(biāo)簽圖5在圖5中選擇c+ Source File,在輸入框中輸入c+源文件的文件名(此例中源文件取名為ComplexNum),注意不要加文件名后綴,點(diǎn)擊后就建好了一個(gè)c+源文件。結(jié)果如圖6所示:圖6在圖6中的右側(cè)就可以輸入代碼了。如圖7 :完成代碼的輸入后點(diǎn)擊圖7中右上方中的進(jìn)行對(duì)源代碼的編譯,如果沒有錯(cuò)誤,就點(diǎn)擊生成可執(zhí)行文件,最后點(diǎn)擊運(yùn)行該程序。常用編輯命令 雖然許多編輯命令可以通過菜單和工具欄實(shí)現(xiàn),但大量的編輯命令都可以通過鍵盤實(shí)現(xiàn)。以下命令通常用鍵盤實(shí)現(xiàn):* 撤消前一次操作。當(dāng)你進(jìn)行了一次錯(cuò)誤的操作時(shí),可以通過敲擊鍵盤上的Ctrl+Z完成;* 重復(fù)前一次操作。通過敲擊Ctrl+Y實(shí)現(xiàn)* 剪切一行。用Ctrl+L來刪除一行并將它放到剪切板中* 剪切。將選中的文本刪除并將它放到剪切板中,用Ctrl+X實(shí)現(xiàn)* 復(fù)制。將選中的文本復(fù)制到剪切板中,用Ctrl+C實(shí)現(xiàn)* 粘貼。將剪切板中的內(nèi)容放到編輯器中文本的當(dāng)前位置處(由光標(biāo)指示),用Ctrl+V實(shí)現(xiàn)1.3 Windows應(yīng)用用AppWizard建立一個(gè)MFC Windows應(yīng)用,在窗口中輸出Hello,World!術(shù)語:AppWizard是一個(gè)工具,利用該工具,你可以創(chuàng)建一個(gè)建立在MFC基礎(chǔ)上的窗口應(yīng)用程序框架,然后在這個(gè)框架中加上自己的應(yīng)用邏輯。你可以選擇所創(chuàng)建的應(yīng)用類型,最常用的是多文檔應(yīng)用(就象你用的字編輯器Microsoft Word一樣,可以同時(shí)打開多個(gè)文檔窗口的應(yīng)用)、單文檔應(yīng)用(類似于Windows提供的notepad,一次只能打開一個(gè)文檔)和對(duì)話框應(yīng)用(類似于Windows的時(shí)鐘程序)。步驟1) 創(chuàng)建一個(gè)新項(xiàng)目利用Developer Studio的AppWizard創(chuàng)建一個(gè)新的項(xiàng)目,步驟為:(1) 選擇菜單File|New,系統(tǒng)將顯示New對(duì)話框(2) 選擇Projects標(biāo)簽,在顯示的項(xiàng)目類型中選擇MFC AppWizard(exe),(見上圖)(3) 在右邊的Project Name編輯框中輸入項(xiàng)目名稱,如“helloMFC,然后按OK.(4) MFC AppWizard 將分幾步詢問你有關(guān)要建立的新項(xiàng)目的配置。第一個(gè)對(duì)話框問你是創(chuàng)建哪種類型的應(yīng)用(單文檔、多文檔還是對(duì)話框類型),選擇創(chuàng)建單文檔應(yīng)用“Single document,然后按Next按鈕。(5) 翻過后面的五個(gè)頁(yè)面(按Next),每個(gè)頁(yè)面可以讓你改變項(xiàng)目的不同選項(xiàng),這個(gè)例子暫時(shí)不設(shè)置這些選項(xiàng)。(6) 最后一個(gè)MFC AppWizard屏幕告訴你App Wizard為你自動(dòng)產(chǎn)生的類。單擊Finish鍵,AppWizard顯示一個(gè)關(guān)于該項(xiàng)目的摘要,列出這些類和你所選擇的特征。如圖所示:(7) 單擊OK(完成),系統(tǒng)自動(dòng)產(chǎn)生helloMFC所需要的文件。2) 瀏覽helloMFC項(xiàng)目當(dāng)你用MFC AppWizard創(chuàng)建了helloMFC項(xiàng)目后,這個(gè)項(xiàng)目的工作區(qū)窗口將會(huì)打開,(如下圖):其中ClassView顯示工作區(qū)中所有項(xiàng)目的類及類的成員;ResourceView顯示項(xiàng)目中包含的資源文件;FileView顯示項(xiàng)目中的各種文件資源。你可以先選擇FileView看一下AppWizard為你創(chuàng)建了哪些文件,然后選擇ClassView看一下定義了哪些類。ClassView中還可以看到一個(gè)Globals文件夾,單擊它前面的加號(hào),可以看到,有一個(gè)預(yù)定義的全局變量theApp,這是你的Windows應(yīng)用程序類的對(duì)象。3) 編譯連接運(yùn)行按F7或者選擇菜單Build|Build helloMFC.exe或,編譯連接得到可執(zhí)行程序,再按Ctrl+F5、或者選擇Build|Execute helloMFC.exe運(yùn)行該程序。程序的結(jié)果如下:4) 用MFC處理輸出現(xiàn)在是你來修改程序的時(shí)候了。我們希望在程序中間的窗口上顯示一行文字“Hello, World 。如何修改呢?(1) 在工作區(qū)窗口中選擇ClassView標(biāo)簽,單擊helloMFC classes前面的加號(hào)(如果已經(jīng)變成減號(hào)則不做此操作)(2) 單擊類CHelloMFCView類前面的加號(hào)(3) 雙擊OnDraw()函數(shù),在右邊的文檔將顯示窗口顯示文件helloMFCView的內(nèi)容,并且自動(dòng)將光標(biāo)定位到函數(shù)OnDraw()處。(4) 修改OnDraw函數(shù)的定義,在最后一行加一句:pDC-TextOut(50,50,Hello, World);(5) 按Ctrl+s或者選菜單File|Save來保存所作的修改5) 編譯連接并運(yùn)行重新編譯連接該項(xiàng)目,運(yùn)行程序,你可以用Ctrl+F5直接運(yùn)行程序,系統(tǒng)將詢問你是否重新編譯該項(xiàng)目,回答“是(Yes)”,如果有編譯錯(cuò)誤,仔細(xì)檢查你加的一句話,是否有錯(cuò)。當(dāng)編譯連接通過后,系統(tǒng)會(huì)自動(dòng)運(yùn)行該程序。結(jié)果與上面有什么不同?經(jīng)過上述修改后,程序可以輸出一行文字“Hello, World。這是你實(shí)現(xiàn)的第一個(gè)Windows程序!是不是很簡(jiǎn)單?!不要擔(dān)心有很多不懂的地方,后面的實(shí)驗(yàn)中你會(huì)慢慢理解?,F(xiàn)在你應(yīng)該會(huì)覺得:哦,原來Windows程序的開發(fā)這么簡(jiǎn)單!1.4 編寫簡(jiǎn)單的計(jì)算程序輸入圓的半徑,計(jì)算圓的周長(zhǎng)和面積并輸出。測(cè)試數(shù)據(jù)輸入:2輸出:The perimeter of the circle : 12.5664The area of the circle : 12.5664輸入:10輸出:The perimeter of the circle : 62.8318The area of the circle : 314.159步驟1) 創(chuàng)建一個(gè)控制臺(tái)項(xiàng)目選擇菜單File|New,在Projects標(biāo)簽下選擇Windows32 Console Application,輸入項(xiàng)目名稱“circle,然后按OK2) 在項(xiàng)目中增加一個(gè)文件選擇菜單File|New,在Files標(biāo)簽下選擇C/C+ Source File,輸入文件名稱“circle,然后按OK3) 在文件中輸入以下內(nèi)容/該程序讓用戶輸入圓的半徑Radius,輸出圓的周長(zhǎng)Perimeter和面積Area#include #include const double PI = 3.14159; /定義一個(gè)常量PIint main() int radius;double perimeter, area;cout radius;perimeter = 2 * PI * radius; /周長(zhǎng)=2Rarea = PI * power(radius, 2); /面積=R2cout The perimeter of the circle : perimeter endl;cout The area of the circle : area endl;return 0;注:power(radius,2)表示求radius的平方,power(x, y)是系統(tǒng)預(yù)定義的函數(shù),該函數(shù)計(jì)算x的y次方。該函數(shù)的原型在文件math.h中說明。4) 編譯、連接并運(yùn)行程序如果你輸入的程序有誤,用下面的方法定位并修改錯(cuò)誤。直到編譯連接通過。運(yùn)行程序,測(cè)試數(shù)據(jù)。編譯和連接錯(cuò)誤定位* 開發(fā)環(huán)境下方的輸出窗口(Output)顯示編譯和連接過程中出現(xiàn)的錯(cuò)誤,錯(cuò)誤信息包括:錯(cuò)誤出現(xiàn)的文件名、行號(hào)、錯(cuò)誤代碼。* 如果不懂錯(cuò)誤消息,將光標(biāo)移動(dòng)到該錯(cuò)誤信息,按F1,就可以顯示該錯(cuò)誤的幫助信息。* 在output窗口,雙擊錯(cuò)誤或者選擇該錯(cuò)誤再按ENTER鍵,系統(tǒng)自動(dòng)將光標(biāo)移動(dòng)到發(fā)生錯(cuò)誤的源程序行,你然后就可以改正錯(cuò)誤。* F4鍵可以選擇并定位下一個(gè)錯(cuò)誤思考問題(1) 程序中為什么要將頭文件math.h包含進(jìn)來?(2) 建立控制臺(tái)應(yīng)用程序的通用步驟是怎樣的?第二章 實(shí)驗(yàn)內(nèi)容安排課程名稱:面向?qū)ο骔INDOWS編程技術(shù)課程總學(xué)時(shí): 50 實(shí)驗(yàn)總學(xué)時(shí): 30 面向?qū)I(yè)(層次): 信息與計(jì)算科學(xué) 應(yīng)開實(shí)驗(yàn)項(xiàng)目數(shù): 5個(gè) 應(yīng)開實(shí)驗(yàn)時(shí)間: 第3學(xué)期 實(shí)驗(yàn)類別: 專業(yè) 本門課程實(shí)驗(yàn)?zāi)康呐c要求: 1、掌握面向?qū)ο蟪绦蛟O(shè)計(jì)分析方法,并應(yīng)用于編程實(shí)踐。2、學(xué)會(huì)設(shè)計(jì)并調(diào)試WINDOWS應(yīng)用程序,進(jìn)一步提高開發(fā)能力。 3、掌握WINDOWS應(yīng)用程序設(shè)計(jì)的基本方法。本課程實(shí)驗(yàn)項(xiàng)目一覽表序號(hào)實(shí)驗(yàn)項(xiàng)目名稱實(shí)驗(yàn)學(xué)時(shí)目的與要求實(shí)驗(yàn)要求實(shí)驗(yàn)類型每組人數(shù)備 注1C+應(yīng)用程序初步2了解C+程序設(shè)計(jì)方法及VC編程環(huán)境必修驗(yàn)證12面向?qū)ο缶幊虒?shí)踐10掌握類歸納與設(shè)計(jì)、類的繼承與派生、多態(tài)等原理及在程序設(shè)計(jì)中應(yīng)用必修驗(yàn)證13MFC控件編程實(shí)踐12掌握MFC程序設(shè)計(jì)方法、MFC控件應(yīng)用(標(biāo)準(zhǔn)控件、公共控件、文檔/視等)必修驗(yàn)證14文件操作2掌握MFC文件串行化操作方法必修驗(yàn)證15MFC綜合編程4設(shè)計(jì)開發(fā)一個(gè)基于MFC的小應(yīng)用程序必修綜合1大綱制定日期:2004/8 大綱執(zhí)筆人:彭永康 大綱審定人:章義來第三章 實(shí)驗(yàn)要求、評(píng)分標(biāo)準(zhǔn)1. 實(shí)驗(yàn)前必備做課前預(yù)習(xí),準(zhǔn)備好預(yù)習(xí)報(bào)告,獨(dú)立完成實(shí)驗(yàn)。2. 實(shí)驗(yàn)過程中遵守實(shí)驗(yàn)室的各項(xiàng)規(guī)章制作,不得在實(shí)驗(yàn)過程中玩游戲,從事與本實(shí)驗(yàn)無關(guān)的內(nèi)容。3. 課后認(rèn)真總結(jié),寫出實(shí)驗(yàn)報(bào)告,及時(shí)上交教師批閱。4. 不得隨意更改實(shí)驗(yàn)時(shí)間,在安排時(shí)間不上實(shí)驗(yàn)算曠課處理,整個(gè)實(shí)驗(yàn)過程中曠課時(shí)間占實(shí)驗(yàn)總學(xué)時(shí)40以上時(shí),該同學(xué)的實(shí)驗(yàn)成績(jī)作降級(jí)處理。5. 實(shí)驗(yàn)報(bào)告不上交教師批閱的,該同學(xué)的平時(shí)成績(jī)將作降級(jí)處理。6. 實(shí)驗(yàn)報(bào)告上交率不足70以上的,考查課該同學(xué)最終成績(jī)不得超過中,不足65不得超過及格,低于65為不及格;考試課則該同學(xué)平時(shí)成績(jī)不超過12分。第四章 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)一 C/C+程序初步目的:1. 了解簡(jiǎn)單C+程序的構(gòu)成;2. 掌握cin,cout等流式輸入輸出設(shè)備的用法;3. 了解掌握函數(shù)重載的實(shí)現(xiàn)及原理。實(shí)驗(yàn)內(nèi)容:1. 應(yīng)用cin,cout實(shí)現(xiàn)“Hello,World!”程序的C+版本。2. 應(yīng)用函數(shù)重載技術(shù)實(shí)現(xiàn)對(duì)整數(shù)、浮點(diǎn)數(shù)、長(zhǎng)整數(shù)求絕對(duì)值的C+程序。實(shí)驗(yàn)要求:1. 每位同學(xué)在實(shí)驗(yàn)前認(rèn)真做好實(shí)驗(yàn)準(zhǔn)備,閱讀VC操作的介紹,對(duì)操作VC進(jìn)行編程的步驟及方法先期進(jìn)行了解;2. 在實(shí)驗(yàn)中出現(xiàn)的錯(cuò)誤,先自己進(jìn)行認(rèn)真的程序檢查,力爭(zhēng)自己找出錯(cuò)誤并掌握C+中改正錯(cuò)誤的方法。3. 在實(shí)驗(yàn)結(jié)束后,對(duì)實(shí)驗(yàn)的結(jié)果進(jìn)行整理,并寫出一份實(shí)驗(yàn)報(bào)告,及時(shí)上交老師。參考程序: include void main() cout”Hello,World!”endl; 思考題:1. n字符與 endl 的作用是否相同,上述程序中的cout”Hello,World!”endl 是否可用下列語名代替? Cout”Hello,World!n”;2. 函數(shù)重載的原則是什么?實(shí)驗(yàn)二面向?qū)ο缶幊虒?shí)踐實(shí)驗(yàn)?zāi)康模?. 掌握類的抽象與封裝,對(duì)象的概念及在VC下定義類的方法。2. 類中成員的繼承與類的派生實(shí)現(xiàn)。3. 掌握從現(xiàn)有類派生出新類的方法及VC下的具體操作。4. 了解在派生類、基類的成員的繼承原則。5. 了解基類成員在派生類中的訪問控制方式。6. 了解掌握靜態(tài)多態(tài)與動(dòng)態(tài)多態(tài)的原理及區(qū)別及程序?qū)崿F(xiàn)方法。7. 了解掌握模板的定義方式及應(yīng)用。8. 掌握重載的原理與實(shí)現(xiàn)方法。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)內(nèi)容共分為類的抽象與封裝、類的繼承及派生、重載、模板等四個(gè)實(shí)驗(yàn)階段,共10個(gè)實(shí)驗(yàn)學(xué)時(shí),可按3、2、2、3學(xué)時(shí)分配方案進(jìn)行分配。1. 設(shè)計(jì)實(shí)現(xiàn)一類CPerson,擁有姓名、性別、地址、聯(lián)系電話、Email等數(shù)據(jù)成員,擁有帶參數(shù)的構(gòu)造函數(shù)CPerson:CPerson(),實(shí)現(xiàn)對(duì)上述數(shù)據(jù)成員賦初值;擁有一成員函數(shù)Output,實(shí)現(xiàn)將姓名、性別、地址、聯(lián)系電話、Email制表輸出?,F(xiàn)有10個(gè)人的信息,編程實(shí)現(xiàn)輸入每人的信息,最后將所有人的信息列表輸出。2. 以1題中的CPerson為基類,派生出Teacher、Student兩個(gè)類,并在它們中增加專業(yè)字段,并重載CPerson類中的Output方法,實(shí)現(xiàn)在輸出1中信息的同時(shí),輸出每個(gè)人的專業(yè);在學(xué)生類中再增設(shè)教師ID字段,指出其班主任,最后實(shí)現(xiàn)一方法pringClass,按指定的班主任ID打印出該班的學(xué)生名單。3. 設(shè)計(jì)實(shí)現(xiàn)一個(gè)復(fù)數(shù)類,對(duì)、-、/四種運(yùn)算符進(jìn)行重載,實(shí)現(xiàn)對(duì)復(fù)數(shù)進(jìn)行 +、*、/ 四種運(yùn)算。4. 應(yīng)用模板實(shí)現(xiàn)求任意數(shù)值的絕對(duì)值的C+函數(shù),并驗(yàn)證它。思考問題a) 構(gòu)造函數(shù)與析構(gòu)函數(shù)的作用如何? 如何定義它們?b) 什么是靜態(tài)類成員?在類中為什么只能聲明靜態(tài)類成員的名稱,而類中不為靜態(tài)類成員分配空間?c) 父類中具有不同訪問屬性的成員如何被子類繼承?子類中可不可以有跟父類同名的成員函數(shù)?d) 簡(jiǎn)述函數(shù)重載的規(guī)則。e) 模板的作用是什么?重載技術(shù)與模板有什么異同?實(shí)驗(yàn)三 MFC控件編程實(shí)踐實(shí)驗(yàn)?zāi)康?. 了解MFC應(yīng)用程序的構(gòu)成及向?qū)?shí)現(xiàn)。2. 掌握MFC中的DOC/VIEW結(jié)構(gòu)類型的應(yīng)用程序的構(gòu)成及不同的類的作用。3. 掌握MFC中鍵盤、鼠標(biāo)事件處理及編程規(guī)則;掌握菜單、按鈕和工具條的資源編輯及在MFC應(yīng)用程序中創(chuàng)建它們的方法。4. 掌握MFC中基于對(duì)話框及標(biāo)準(zhǔn)控件的UI設(shè)計(jì)及VC程序?qū)崿F(xiàn),重點(diǎn)掌握靜態(tài)控件、文本框、列表框、組合框、進(jìn)度條等控件的編程技能。5. 掌握MFC中基于公共控件的UI設(shè)計(jì)開發(fā)方法。實(shí)驗(yàn)內(nèi)容 本次實(shí)驗(yàn)項(xiàng)目的實(shí)驗(yàn)內(nèi)容主要是對(duì)引導(dǎo)學(xué)生掌握MFC程序設(shè)計(jì)過程中涉及的各項(xiàng)內(nèi)容,實(shí)驗(yàn)內(nèi)容可分為doc/view及消息處理,對(duì)話框設(shè)、按鈕、文本框及靜態(tài)文本框,列表框與組合框,進(jìn)度條與時(shí)鐘,樹視及列表視控件等五個(gè)不同小項(xiàng)目來完成,教師可根據(jù)需要選擇三到四個(gè)不同的實(shí)驗(yàn)子項(xiàng)目來完成本次實(shí)驗(yàn)。1. 根據(jù)教材中有關(guān)文本/視的教程,練習(xí)掌握Doc/View應(yīng)用程序的開發(fā)步驟及過程。2. 對(duì)話設(shè)計(jì)。(設(shè)計(jì)實(shí)現(xiàn)一個(gè)對(duì)話框,實(shí)現(xiàn)如下功能: 對(duì)話上有一文本框(多行顯示模式),三個(gè)按鈕(打開、存儲(chǔ)、退出),可實(shí)現(xiàn)通過單擊“打開”按鈕,將一文本文件中的文字信息導(dǎo)入文本框中顯示,我們可以對(duì)文本框中的文本信息進(jìn)行編輯,單擊“存儲(chǔ)”后將數(shù)據(jù)存入當(dāng)前目錄下的newData.txt文件中(類型為文本類型)3. 菜單點(diǎn)菜程序設(shè)計(jì)。本程序基于對(duì)話框開發(fā)設(shè)計(jì),對(duì)話上有一組合框(用于顯示菜譜分類),兩列表框,一個(gè)列表框顯示當(dāng)前分類下的菜的名稱各價(jià)格,在用戶選中(可單選也可多選),單選時(shí)雙擊菜名即可實(shí)現(xiàn)點(diǎn)菜操作,多選時(shí),在客戶選擇相應(yīng)的菜名后,單擊“點(diǎn)菜”按鈕,即將客戶選中的菜名全部復(fù)制到另一列表框中,同時(shí)顯示客戶所選菜的菜金總額。4. 電子時(shí)鐘。應(yīng)用MFC中的OnTimer事件設(shè)計(jì)實(shí)現(xiàn)一電子時(shí)鐘,時(shí)鐘以HH:MM:SS.nn方式顯示,其中“nn”表示的是百分之一秒計(jì)量,同時(shí)在本對(duì)話框中設(shè)計(jì)一進(jìn)度條,進(jìn)度條中的進(jìn)度顯示的是百分之一秒度量的統(tǒng)計(jì)數(shù)值,當(dāng)進(jìn)度條到達(dá)99時(shí),表明計(jì)時(shí)滿1秒。5. 應(yīng)用樹視、列表視實(shí)現(xiàn)3中的點(diǎn)菜程序設(shè)計(jì)開發(fā)。思考題1. doc/view框架下,如何實(shí)現(xiàn)對(duì)鍵盤、鼠標(biāo)事件處理?2. 如何根據(jù)需要定制菜單、工具條、狀態(tài)欄?3. 如何實(shí)現(xiàn)文本數(shù)據(jù)的導(dǎo)入與存儲(chǔ)?4. 如何改變文本框中的文字的字型信息?5. 面向?qū)ο蠹夹g(shù)如何應(yīng)用于MFC編程?舉例說明之。實(shí)驗(yàn)四 文件的操作實(shí)驗(yàn)?zāi)康?. 一步掌握建立、編譯、連接與調(diào)試Windows應(yīng)用程序的方法,掌握用MFC中的類CArchive來進(jìn)行文件串行化操作的方法;2. 學(xué)習(xí)使用VC6.0環(huán)境的基本命令和功能鍵;3. 學(xué)習(xí)使用MFC開發(fā)程序的方法;實(shí)驗(yàn)內(nèi)容 通過鍵盤輸入文字?jǐn)?shù)據(jù),通過doc/view中的串行化機(jī)制實(shí)現(xiàn)文本數(shù)據(jù)的自動(dòng)存取。實(shí)驗(yàn)步驟1、 啟動(dòng)VC6.0,新建一個(gè)單文檔工程,并將該工程取名為TEXT;2、 在資源中增加位圖資源,資源名為:IDB_BITMAP1;3、 在視圖類中增加消息響應(yīng)函數(shù)OnCreate,用該函數(shù)來在視圖窗口中創(chuàng)建光標(biāo),同時(shí),在該函數(shù)中得到字體的特征,函數(shù)代碼如下:int CTextView:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CView:OnCreate(lpCreateStruct) = -1)return -1;/ TODO: Add your specialized creation code here/得到系統(tǒng)字體的屬性CClientDC dc(this);TEXTMETRIC tm;dc.GetTextMetrics(&tm);/創(chuàng)建光標(biāo)bitmap.LoadBitmap(IDB_BITMAP1);CreateCaret(&bitmap);ShowCaret();return 0;4、在CtextView類中添加公有成員變量:CString m_strLine,該變量的作用用于保存鍵盤所輸入的字符,同時(shí)添加公用成員變量int m_nWidth和CPoint m_ptOrigin;5、 CtextView類中響應(yīng)鼠標(biāo)左鍵按下事件OnLButtonDown,該函數(shù)的主要作用確定光標(biāo)的位置,代碼如下:6、 CtextView類中添加字符響應(yīng)函數(shù)OnChar,在該函數(shù)中把輸入的字符串按格式保存到字符變量m_strLine中,代碼如下:void CTextView:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultSetCaretPos(point);m_strLine.Empty();m_ptOrigin=point;CView:OnLButtonDown(nFlags, point);void CTextView:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) / TODO: Add your message handler code here and/or call defaultCClientDC dc(this);CFont font;font.CreatePointFont(150,宋體,NULL);CFont *pOldFont=dc.SelectObject(&font);TEXTMETRIC tm;dc.GetTextMetrics(&tm);if(0x0d=nChar)m_strLine.Empty();m_ptOrigin.y+=tm.tmHeight;else if(0x08=nChar)COLORREF clr=dc.SetTextColor(dc.GetBkColor();dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);m_strLine=m_strLine.Left(m_strLine.GetLength()-1);dc.SetTextColor(clr);elsem_strLine+=nChar;CSize sz=dc.GetTextExtent(m_strLine);CPoint pt;pt.x=m_ptOrigin.x+sz.cx;pt.y=m_ptOrigin.y;SetCaretPos(pt);dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);dc.SelectObject(pOldFont);CView:OnChar(nChar, nRepCnt, nFlags);7、在CtextDoc中設(shè)立一個(gè)布爾型控制變量flag;并在CtextDoc類的構(gòu)造函數(shù)中將該變量初始化為false;8、 入CtextDoc類的串行化函數(shù)Serialize中,開始對(duì)輸入的文件進(jìn)行保存和打開的操作,代碼如下:void CTextDoc:Serialize(CArchive& ar)POSITION pos = GetFirstViewPosition();CTextView* pFirstView =(CTextView*)GetNextView( pos );if (ar.IsStoring()/ TODO: add storing code herearm_strLine;else/ TODO: add loading code herearpFirstView-m_strLine;flag=true;9、 同時(shí)在CtextView類的OnDraw函數(shù)中添加如下代碼:void CTextView:OnDraw(CDC* pDC)CTextDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here/下面是需添加的代碼if(pDoc-flag)CSize sz=pDC-GetTextExtent(m_strLine);CPoint pt;pt.x=m_ptOrigin.x+sz.cx;pt.y=m_ptOrigin.y;SetCaretPos(pt);pDC-TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);pDoc-flag=false;10、運(yùn)行所編寫的程序,得出結(jié)果。實(shí)驗(yàn)五 MFC綜合編程實(shí)驗(yàn)?zāi)康?. 通過本次實(shí)踐,基本能完成簡(jiǎn)單的MFC應(yīng)用軟件設(shè)計(jì)。2. 掌握綜合MFC各項(xiàng)知識(shí)進(jìn)行各類MFC應(yīng)用程序設(shè)計(jì)開發(fā)的能力。實(shí)驗(yàn)內(nèi)容 本實(shí)驗(yàn)是本課程的最后一項(xiàng)實(shí)驗(yàn)項(xiàng)目,在本次實(shí)驗(yàn)中將綜合訓(xùn)練學(xué)生的綜合編程能力及開發(fā)一般軟件的能力,可在下列題目中選擇一題,自行設(shè)計(jì)方案,編程完成之。1. 綜合所學(xué)知識(shí),實(shí)現(xiàn)一基于樹視、列表視的酒店點(diǎn)菜系統(tǒng),系統(tǒng)中的菜單分類,菜肴簡(jiǎn)介及菜肴其它信息可以考慮存放在文件中,也可選擇存放在數(shù)據(jù)庫(kù)中,具體功能有系統(tǒng)初始化功能,完成菜肴信息及分類信息的錄入,點(diǎn)菜功能即客戶點(diǎn)菜功能,日結(jié)算功能即根據(jù)客戶所點(diǎn)的菜肴清單分類統(tǒng)計(jì)出當(dāng)日營(yíng)業(yè)額及清單。2. 平面交互作圖系統(tǒng)。實(shí)現(xiàn)通過鼠標(biāo)拖放進(jìn)行平面作圖功能,圖元存儲(chǔ)功能及重顯功能。Windows的圖形設(shè)備接口(GDI)簡(jiǎn)介MFC的圖形對(duì)象。 在MFC類庫(kù)中,用CDC類封裝設(shè)備文本對(duì)象。 CPaintDC類是從CDC類派生的設(shè)備環(huán)境類。CPaintDC類的對(duì)象在OnPaint()函數(shù)中使用。 另外,CClientDC類也是常用的CDC派生類,用于在OnPaint()函數(shù)外訪問設(shè)備環(huán)境。畫筆CPenCPen:CreatePenBOOL CreatePen (int nPenStyle, int nWidth, COLORREF crColor);第1個(gè)參數(shù)是畫筆樣式,可取畫筆樣式說明PS_SOLID創(chuàng)建實(shí)線筆PS_DASH創(chuàng)建由短線構(gòu)成的虛線PS_DOT創(chuàng)建由點(diǎn)構(gòu)成的虛線PS_DASHDOT創(chuàng)建由短線和點(diǎn)構(gòu)成的虛線PS_DASH_DOTDOT創(chuàng)建由短線、點(diǎn)、點(diǎn)構(gòu)成的虛線PS_NULL創(chuàng)建空(空白)畫筆第2個(gè)參數(shù)為線寬 第3個(gè)參數(shù)為線的顏色,可使用RGB()函數(shù)指定畫刷CBrush類 BOOL CreateSolidBrush ( COLORREF crColor );參數(shù)crColor指定了畫刷的顏色。BOOL CreateHatchBrush ( int nIndex, COLORREF crColor );其中參數(shù)nIndex指定了陰影風(fēng)格,可取值為:陰影風(fēng)格說明HS_BDIAGONAL 從左下角到右上角的45度斜線HS_CROSS 水平線與垂直線HS_DIAGCROSS 相互垂直的45度線HS_FDIAGONAL 從左上角到右下角的45度斜線HS_HORIZONTAL 水平線HS_VERTICAL 垂直線CDC類CDC:SelectObject()函數(shù)原型如下:CPen* SelectObject( CPen* pPen );CBrush* SelectObject( CBrush* pBrush );virtual CFont* SelectObject( CFont* pFont );繪畫模式 在Windows中,繪圖的最終效果不但取決于畫筆和畫刷的設(shè)置,還可以通過設(shè)定繪圖模式來修正。CDC的成員函數(shù)SetROP2()設(shè)定,其原型為:int SetROP2 ( int nDrawMode );其中參數(shù)nDrawMode為選定的繪圖模式,常用模式有:繪圖模式 說明R2_BLACK 無論畫筆色如何,只用黑色繪圖;R2_WHITE 無論畫筆色如何,只用白色繪圖;R2_NOP無論畫筆色如何,用無色筆繪圖;R2_NOT用與背景色相反的顏色繪圖;R2_NOTCOPYPEN 用與畫筆色相反的顏色繪圖;R2_COPYPEN 用畫筆色繪圖;R2_XORPEN 對(duì)畫筆色和背景色作異或(XOR)運(yùn)算GDI坐標(biāo)系 GDI支持兩種類型的坐標(biāo)系邏輯坐標(biāo)系 與 設(shè)備坐標(biāo)系 映射模式邏輯單位x遞增方向y遞增方向MM_TEXT像素向右向下MM_LOMETRIC 0.1mm向右 向上MM_HIMETRIC 0.01mm向右向上MM_LOENGLISH 0.01inch向右向上MM_HIENGLISH 0.001inch向右向上MM_TWIPS 1/1440inch 向右向上MM_ISOTROPIC 可調(diào)整 (x = y) 可選擇可選擇MM_ANISOTROPIC 可調(diào)整(x != y) 可選擇可選擇設(shè)置映射模式CDC:SetMapMode(),其原型為virtual int SetMapMode ( int nMapMode );參數(shù)nMapMode為欲設(shè)置的映射模式 返回值為原來的映射模式。參看13.2:“打印和打印預(yù)覽”Windows下使用的設(shè)備坐標(biāo)系統(tǒng)客戶區(qū)坐標(biāo)系統(tǒng) 窗口坐標(biāo)系統(tǒng) 屏幕坐標(biāo)系統(tǒng)。void ScreenToClient( LPPOINT lpPoint ) const;void ScreenToClient( LPRECT lpRect ) const;void ClientToScreen( LPPOINT lpPoint ) const;void ClientToScreen( LPRECT lpRect ) const;DPtoLP()用于將設(shè)備坐標(biāo)轉(zhuǎn)換為邏輯坐標(biāo)void LPtoDP ( LPPOINT lpPoints, int nCount = 1 ) const;void LPtoDP ( LPRECT lpRect ) const;void DPtoLP ( LPPOINT lpPoints, int nCount = 1 ) const;void DPtoLP ( LPRECT lpRect ) const;字體 CFont類成員函數(shù)的原型為:BOOL CreateFont( int nHeight, / 字符邏輯高度int nWidth, / 字體邏輯寬度int nEscapement, / 出口矢量與X軸的角度int nOrientation, / 字符基線與X軸的角度int nWeight, / 字體磅值BYTE bItalic, / 非0則為斜體BYTE bUnderline, / 非0則加下劃線BYTE cStrikeOut, / 非0則加刪除線BYTE nCharSet, / 此字體的字符集BYTE nOutPrecision, / 輸出精度BYTE nClipPrecision, / 裁剪精度BYTE nQuality, / 輸出質(zhì)量BYTE nPitchAndFamily, / 調(diào)距和字體族LPCTSTR lpszFacename )

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論