《C面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書(程細(xì)柱)_第1頁(yè)
《C面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書(程細(xì)柱)_第2頁(yè)
《C面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書(程細(xì)柱)_第3頁(yè)
《C面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書(程細(xì)柱)_第4頁(yè)
《C面向?qū)ο蟪绦蛟O(shè)計(jì)》實(shí)驗(yàn)指導(dǎo)書(程細(xì)柱)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書主講:程細(xì)柱韶關(guān)學(xué)院計(jì)算機(jī)科學(xué)技術(shù)學(xué)院2010-3-1目 錄實(shí)驗(yàn)一 Visual C+開發(fā)環(huán)境及C+程序的上機(jī)過(guò)程3實(shí)驗(yàn)二 選擇和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)8實(shí)驗(yàn)三 類的定義和使用11實(shí)驗(yàn)四 類的繼承和派生14實(shí)驗(yàn)五 多態(tài)性程序設(shè)計(jì)15實(shí)驗(yàn)六 運(yùn)算符重載和類模板17實(shí)驗(yàn)七 文件操作18實(shí)驗(yàn)八 利用AppWizard向?qū)蒞indows應(yīng)用程序20實(shí)驗(yàn)九 消息處理24實(shí)驗(yàn)十 文檔/視圖結(jié)構(gòu)28實(shí)驗(yàn)十一 對(duì)話框設(shè)計(jì)30實(shí)驗(yàn)一 Visual C+開發(fā)環(huán)境及C+程序的上機(jī)過(guò)程一、實(shí)驗(yàn)?zāi)康?、 了解和使用VC集成開發(fā)環(huán)境;2、 熟悉VC環(huán)境的基本命令和功能鍵;3、 熟悉常用的功能菜

2、單命令 ;4、 學(xué)習(xí)使用VC+環(huán)境的幫助 ;5、 學(xué)習(xí)完整的C+程序開發(fā)過(guò)程 ;6、 理解簡(jiǎn)單的C+程序結(jié)構(gòu) 二、實(shí)驗(yàn)內(nèi)容 使用Visual C+ 6.0集成環(huán)境來(lái)編輯、編譯并運(yùn)行下面簡(jiǎn)單C+程序:1#include <iostream.h>void main()cout<<"This is a C+ program.n"2#include <iostream.h>int max(int,int); /聲明自定義函數(shù) void main() /主函數(shù) int a,b,c;cout<<"input two number

3、:n"cin>>a>>b;c=max(a,b); /調(diào)用max函數(shù),將得到的值賦給C cout<<"max="<<c<<endl;int max(int x,int y) /定義max函數(shù),函數(shù)值為整型,形式參數(shù)x,y為整型 int z; /max函數(shù)中的聲明部分,定義本函數(shù)中用到的變量z為整型 if(x>y) z=x;else z=y;return(z); /將z的值返回,通過(guò)max帶回調(diào)用處 三、實(shí)驗(yàn)步驟Visual C+ 6.0啟動(dòng)后的用戶界面 選擇菜單“開始/程序/Microsoft Vis

4、ual Studio 6.0/Microsoft Visual C+ 6.0”,得到Visual C+ 6.0啟動(dòng)后的用戶界面,如圖1-1所示。圖1-1 Visual C+ 6.0用戶界面 1、創(chuàng)建新工程(1)單擊菜單“文件/新建”,顯示“新建”對(duì)話框,如圖1-2所示。(2)在此對(duì)話框的列表欄中,選擇“Win32 Console Application”(Win32控制臺(tái)應(yīng)用程序”)。在 “工程”欄中輸入一個(gè)工程名,如“實(shí)驗(yàn)一”,在位置文本框中選擇工程所在的路徑,如圖中所示H:C+實(shí)驗(yàn)實(shí)驗(yàn)一,單擊“確定”按鈕。圖1-2 “新建”對(duì)話框(3)在“Win32 Consol Application-

5、Step 1 of 1” 對(duì)話框中選擇An empty project單選項(xiàng)。然后單擊“Finish”按鈕,如圖1-3所示。圖1-3 “Win32 Consol Application-Step 1 of 1” 對(duì)話框(4)在“新建工程信息”對(duì)話框中單擊“確認(rèn)”按鈕,完成工程創(chuàng)建過(guò)程。2、創(chuàng)建C+源程序文件(1)編輯C+源程序:編輯C+源程序時(shí),選擇“文件”菜單項(xiàng),出現(xiàn)一個(gè)下拉式菜單,再選擇該菜單中的“新建”選項(xiàng)(熱鍵為Ctrl+N),打開“新建”窗口,如圖1-4所示: 圖1-4 “新建”窗口(2) 選擇“文件”,在它的下拉列表框中選擇“C+ Source File”,如圖1-4所示,再按擊“

6、確定”,出現(xiàn)編輯屏幕,如圖1-5所示:圖1-5 “C+”源程序編輯(3)在“C+源程序編輯”窗口下編輯C+源程序。在編輯窗口鍵入C+源程序。如圖1-6所示,鍵入如下源程序:圖1-6 編輯C+源程序3編譯連接和運(yùn)行源程序(1)選擇菜單項(xiàng)“編譯”,出現(xiàn)“編譯”的下拉菜單,在該下拉式菜單中選擇“編譯 eg1-1.cpp”菜單項(xiàng),這時(shí)系統(tǒng)開始對(duì)當(dāng)前的源程序進(jìn)行編譯,在編譯過(guò)程中,將所發(fā)現(xiàn)的錯(cuò)誤顯示在屏幕下方的“編譯”窗口中。所顯示的錯(cuò)誤信息中指出該錯(cuò)誤所在行號(hào)和該錯(cuò)誤的性質(zhì)。用戶可根據(jù)這些錯(cuò)誤信息進(jìn)行修改。上述程序的“編譯”窗口,如圖1-7所示:圖1-7 “編輯”窗口(2)編譯無(wú)錯(cuò)誤后,可進(jìn)行連接生成

7、可執(zhí)行文件(.exe),這時(shí)選擇“編譯”下拉菜單中的“構(gòu)件 eg1-1.exe”選項(xiàng)?!熬幾g”窗口出現(xiàn)如圖1-8所示的信息說(shuō)明編譯連接成功,并生成以源文件名為名字的可執(zhí)行文件(eg1-1.exe)。圖1-8 編譯連接信息(3)執(zhí)行可執(zhí)行文件的方法是選擇“編譯”菜單項(xiàng)中“執(zhí)行 eg1-1.exe”選項(xiàng)。這時(shí),運(yùn)行該可執(zhí)行文件,并將結(jié)果顯示在另外一個(gè)顯示執(zhí)行文件輸出結(jié)果的窗口中,如圖1-9所示:圖1-9 運(yùn)行C+程序結(jié)果4關(guān)閉打開工作區(qū)、打開工作區(qū)單擊菜單“文件/關(guān)閉工作區(qū)”,關(guān)閉工作區(qū)。單擊菜單“文件/打開工作區(qū)”,在強(qiáng)出的對(duì)話框中選定“H:C+實(shí)驗(yàn)實(shí)驗(yàn)一實(shí)驗(yàn)一.dsw”,單擊“打開”按鈕,則可

8、打開工作區(qū),對(duì)已建立的工程文件進(jìn)行修改。5根據(jù)實(shí)驗(yàn)步驟14,建立、編譯并運(yùn)行實(shí)驗(yàn)程序2。四、實(shí)驗(yàn)要求1  復(fù)習(xí)教材有關(guān)內(nèi)容。2  掌握C控制臺(tái)程序的開發(fā)、調(diào)試步驟。3  完成實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)二 選擇和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?熟練if和switch選擇結(jié)構(gòu)、while 和for循環(huán)結(jié)構(gòu)及實(shí)現(xiàn)循環(huán)的方法。2掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)各種算法(如窮舉、迭代、遞推等)。二、知識(shí)要點(diǎn)C+語(yǔ)句可以分為以下5類:(1)表達(dá)式語(yǔ)句:由一個(gè)表達(dá)式構(gòu)成一個(gè)語(yǔ)句,最典型的是,由賦值表達(dá)式構(gòu)成一個(gè)賦值語(yǔ)句。例:a=5;(2)聲明語(yǔ)句:一個(gè)名字在使用之前必須先聲明,以便建立名字與

9、程序?qū)嶓w之間的映射關(guān)系。按聲明的程序?qū)嶓w結(jié)構(gòu)對(duì)象聲明語(yǔ)句可以分為:聲明變量;聲明函數(shù);聲明對(duì)象。按產(chǎn)生不產(chǎn)生程序?qū)嶓w,聲明語(yǔ)句可分為定義性與引用性兩種。(3) 空語(yǔ)句:只有一個(gè)分號(hào)的語(yǔ)句稱為空語(yǔ)句。主要用于語(yǔ)法上要求有一條語(yǔ)句但實(shí)際沒(méi)有任何操作可執(zhí)行的場(chǎng)合。(4)塊語(yǔ)句:也稱為復(fù)合語(yǔ)句或分程序,是括在一對(duì)花括號(hào)之間的語(yǔ)句序列。在語(yǔ)法上它相當(dāng)于一條語(yǔ)句,只是在花括號(hào)外不再寫分號(hào)。塊語(yǔ)句主要在兩種情形下使用:語(yǔ)法要求一條語(yǔ)句,但又難以只用一條簡(jiǎn)單語(yǔ)句表達(dá)的情形;形成局部化的封裝體。(5)流程控制語(yǔ)句 條件語(yǔ)句:if () else 循環(huán)語(yǔ)句:for () 循環(huán)語(yǔ)句:while () 循環(huán)語(yǔ)句:do

10、 while () 結(jié)束本次循環(huán)語(yǔ)句:continue 終止執(zhí)行switch或循環(huán)語(yǔ)句:break 多分支選擇語(yǔ)句:switch()case1;case2 ;default; 從函數(shù)返回語(yǔ)句:return三、實(shí)驗(yàn)內(nèi)容及步驟1 輸入并運(yùn)行下列程序并分析其功能。main() int t,a,b,c,d;cout<<“請(qǐng)輸入四個(gè)數(shù):”;cin>>a>>b>>c>>d;cout<<“n排序結(jié)果如下:”;if (a>b) t=a;a=b;b=t;if (a>c) t=a;a=c;c=t;if (a>d) t=a;a

11、=d;d=t;if (b>c) t=b;b=c;c=t;if (b>d) t=b;b=d;d=t;if (c>d) t=c;c=d;d=t;cout<<a<<b<<c<<d;2設(shè)計(jì)程序找出1100 間的質(zhì)數(shù),顯示出來(lái)。用for 或while 或do-while循環(huán)語(yǔ)句實(shí)現(xiàn)。3下面程序統(tǒng)計(jì)字符數(shù)組c 中0、1、2及其他字符出現(xiàn)的次數(shù),分別存放在變量i0、i1、i2中,統(tǒng)計(jì)結(jié)束后輸出它們的值。要求:分析出現(xiàn)結(jié)果的原因,如何修改使結(jié)果正確。#include<stdio.h>#include<conio.h>vo

12、id main()char c=”0123456789001112222”int i0=0,i1=0,i2=0,i3=0;for (int i=0;i<19;i+)switch(ci) case0: i0+;case1: i1+;case2: i2+;default:i3+;cout<<”i0=”<<i0<<endl;cout<<”i1=”<<i1<<endl;cout<<”i2=”<<i2<<endl;cout<<”i3=”<<i3<<endl

13、;getch();實(shí)驗(yàn)三 類的定義和使用一、實(shí)驗(yàn)?zāi)康?1、 理解面向?qū)ο蟪绦蛟O(shè)計(jì)方法的基本原理及主要特點(diǎn)抽象、封裝、繼承和多態(tài)。 2、 理解類和對(duì)象的概念以及如何利用類來(lái)解決具體問(wèn)題。 二、實(shí)驗(yàn)內(nèi)容1、 掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)思想 2、 掌握類的定義。 3、 掌握對(duì)象的聲明和引用。 4、 掌握具有不同訪問(wèn)屬性的成員的訪問(wèn)方式 5、 觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過(guò)程。三、實(shí)驗(yàn)步驟 構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行 #include <iostream.h> class score public: score(int x,int y) sc1=x; sc2=y; cout<<&qu

14、ot;constructing score : "<<x<<" "<<y<<endl; score() cout<<"destructing score: "<<sc1<<" "<<sc2<<endl; protected: int sc1; int sc2; ; class student public: student(int id): score(88,99) noid=id; cout<<"

15、;constructing a student,id : "<<noid; student() cout<<"destructing a student: "<<noid<<endl; private: int noid; ; void main() student s1(333); cout<<"back in main"<<endl; 編譯、連接并運(yùn)行程序四、實(shí)驗(yàn)要求1、 寫出程序,并調(diào)試程序,要給出測(cè)試數(shù)據(jù)和實(shí)驗(yàn)結(jié)果。2、 整理上機(jī)步驟,總結(jié)經(jīng)驗(yàn)和體會(huì)。3、 完成實(shí)驗(yàn)

16、報(bào)告和上交程序。實(shí)驗(yàn)四 類的繼承和派生一、實(shí)驗(yàn)?zāi)康?1、 理解繼承的含義,掌握派生類的定義方法和實(shí)現(xiàn);2、 理解公有繼承下基類成員對(duì)派生類成員和派生類對(duì)象的可見性,能正確地訪問(wèn)繼承層次中的各種類成員;3、 理解保護(hù)成員在繼承中的作用,能夠在適當(dāng)?shù)臅r(shí)候選擇使用保護(hù)成員以便派生類成員可以訪問(wèn)基類的部分非公開的成員;4、 理解虛函數(shù)在類的繼承層次中的作用,虛函數(shù)的引入對(duì)程序運(yùn)行時(shí)的影響,能夠?qū)κ褂锰摵瘮?shù)的簡(jiǎn)單程序?qū)懗龀绦蚪Y(jié)果。 二、實(shí)驗(yàn)內(nèi)容1. 掌握繼承和派生的概念,派生類的定義方法。 2. 熟悉繼承的不同方式對(duì)基類成員的訪問(wèn)控制 3. 掌握多重繼承的概念、定義方法、多重繼承派生類構(gòu)造函數(shù)的執(zhí)行順序

17、。 先執(zhí)行所有基類的構(gòu)造函數(shù)(順序按照定義派生類時(shí)指定的各基關(guān)順序) 再執(zhí)行對(duì)象成員所在類的構(gòu)造函數(shù)(順序按照它們?cè)陬愔械穆暶黜樞? 最后執(zhí)行派生類構(gòu)造函數(shù)體中的內(nèi)容。 三、實(shí)驗(yàn)步驟 1、派生類構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行 class Person char m_strName10; int m_nAge; public: Person(char* name,int age) strcpy(m_strName, name); m_nAge = age; cout<<"constructor of person"<<m_strName<&l

18、t;endl; Person() cout<<"deconstrutor of person"<<m_strName<<endl; ; class Employee : public Person char m_strDept20; Person Wang; public: Employee(char *name, int age, char *dept, char *name1, int age1) : Person(name,age) , Wang(name1,age1) strcpy(m_strDept, dept); cout&l

19、t;<"constructor of Employee"<<endl; Employee() cout<<"deconstrucor of Employee"<<endl; 編譯、連接并運(yùn)行程序四、實(shí)驗(yàn)要求1. 寫出程序,并調(diào)試程序,要給出測(cè)試數(shù)據(jù)和實(shí)驗(yàn)結(jié)果。2. 整理上機(jī)步驟,總結(jié)經(jīng)驗(yàn)和體會(huì)。3. 完成實(shí)驗(yàn)報(bào)告和上交程序。實(shí)驗(yàn)五 多態(tài)性程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康?1、 理解多態(tài)性的基本概念;2、 掌握虛函數(shù)和純虛函數(shù)的概念;3、 了解抽象類的概念。 二實(shí)驗(yàn)內(nèi)容1、理解多態(tài)性的基本思想。2、學(xué)習(xí)使用虛函數(shù)實(shí)現(xiàn)動(dòng)態(tài)多態(tài)性。

20、三、實(shí)驗(yàn)步驟 多態(tài)性編程實(shí)例 #include <iostream.h> class chuzhong public: chuzhong(double x,double y):x1(x),y1(y) virtual double sum() double score; score=x1+y1; return score; protected: double x1,y1; ; class gaozhong :public chuzhong public: gaozhong(double x,double y,double z):chuzhong(x,y),z1(z) virtual

21、double sum() double score; score=x1+y1+z1; return score; protected: double z1; ; void fn(chuzhong & chu) cout<<chu.sum()<<endl; void main() chuzhong cz(85.5,95.5); gaozhong gz(75.5,78.5,80.5); fn(cz); fn(gz); 編譯、連接并運(yùn)行程序四實(shí)驗(yàn)要求1. 寫出程序,并調(diào)試程序,要給出測(cè)試數(shù)據(jù)和實(shí)驗(yàn)結(jié)果。2. 整理上機(jī)步驟,總結(jié)經(jīng)驗(yàn)和體會(huì)。3. 完成實(shí)驗(yàn)報(bào)告和上交程序。

22、 實(shí)驗(yàn)六 運(yùn)算符重載和類模板一、實(shí)驗(yàn)?zāi)康?掌握C+中運(yùn)算符重載的機(jī)制和運(yùn)算符重載的方式;2掌握類型轉(zhuǎn)換的方式、內(nèi)存的動(dòng)態(tài)分配;3掌握類模板的定義,掌握類模板的實(shí)例化。二、知識(shí)要點(diǎn)1運(yùn)算符重載成員函數(shù)方式: 單目(返回類型 類名 operator 單目運(yùn)算符( ))雙目(返回類型 類名operator 雙目運(yùn)算符(類名&引用 ))下標(biāo)運(yùn)算符重載:類型 類名operator (下標(biāo)類型形參)函數(shù)體提取符重載:預(yù)定義插入符 ostream & ostreamoperator<<(type &obj);預(yù)定義提取符 istream & istreamoper

23、ator>>(type &obj);運(yùn)算符重載規(guī)則:(1)不可以重載非C+的運(yùn)算符;(2)運(yùn)算符重載可以采用成員函數(shù)方式或友元方式;(3)被重載的運(yùn)算符必須保持預(yù)定義的的優(yōu)先級(jí)與結(jié)合性;(4)應(yīng)盡量使重載的運(yùn)算符語(yǔ)義自然、好理解;(5)注意各運(yùn)算符之間的聯(lián)系。2類模板:template <class Type>class 類名 ;(1)每一個(gè)類模板的成員函數(shù)的外部定義,都與一般函數(shù)模板的定義一樣,必須以類型形參開始,此外還應(yīng)加以函數(shù)返回值類型、類范圍、函數(shù)名、形參序列,類名后面必須加上類型形參。(2)類模板是類的抽象類型,它的實(shí)例化是生成一個(gè)具體的類。三、實(shí)驗(yàn)內(nèi)

24、容及步驟1分析教程“函數(shù)模板”中的例子,自行設(shè)計(jì)一個(gè)簡(jiǎn)單的類模板。2分析教程“運(yùn)算符重載”中的例子,自行設(shè)計(jì)一個(gè)簡(jiǎn)單的重載運(yùn)算符。3指出下面程序中的錯(cuò)誤,改正并運(yùn)行。#include<iostream.h>class Point private:int x1,x2;public:Point(int x,int y) x1=x;x2=y;int x_cord()return x1;int y_cord()return x2;main()Point data(5,6);cout<<data.x_cord()<<endl;cout<<data.y_co

25、rd()<<endl;Point more_data20;實(shí)驗(yàn)七 文件操作一、實(shí)驗(yàn)?zāi)康?掌握基本的輸入輸出操作及格式;2用C+預(yù)定義的文件I/O類進(jìn)行文件輸入輸出。二、知識(shí)要點(diǎn)文件操作:打開文件、讀寫文件、關(guān)閉文件。低層次I/O機(jī)制:int creat()、int open()、int close()、int read()、int write()高層次I/O機(jī)制:字符I/O函數(shù)getchar()、字符串I/O函數(shù)gets()、格式化I/O函數(shù)printf()流類庫(kù):streambuf類、ios類、ostream類、istream類、iostream類三、實(shí)驗(yàn)內(nèi)容及步驟1使用I/O流

26、以文本方式建立一個(gè)文件test1.txt,寫入字符“已成功寫入!”#include<fstream.h>void main() ofstream file1(“test1.txt”);file1<<”已成功寫入!”;file1.close();模仿以上程序,編制一段源程序,使用I/O流以文本方式打開test1.txt,讀出內(nèi)容并顯示出來(lái)。2設(shè)字符串string=”1 2 3 4 5 6 7 8 9”,用串I/O的方法編程逐個(gè)讀取這個(gè)串的每個(gè)數(shù),直到讀完為止,并在屏幕上輸出。#include <iostream.h>#include <strstrea.

27、h>void main()int n;char string="1 2 3 4 5 6 7 8 9"istrstream s(string);while(!s.eof()s >>n;cout <<n<<" "cout <<endl;實(shí)驗(yàn)八 利用AppWizard向?qū)蒞indows應(yīng)用程序一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)利用Appwizard向?qū)ч_發(fā)Windows應(yīng)用程序的過(guò)程。二、實(shí)驗(yàn)內(nèi)容術(shù)語(yǔ):AppWizard是一個(gè)工具,利用該工具,你可以創(chuàng)建一個(gè)建立在MFC基礎(chǔ)上的窗口應(yīng)用程序框架,然后在這個(gè)框架中加上自己的

28、應(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、用AppWizard建立一個(gè)單文檔應(yīng)用程序,在窗口中輸出”Hello,World!”2、用AppWizard建立一個(gè)對(duì)話框應(yīng)用程序,在對(duì)話框上擺放相應(yīng)控件。程序結(jié)果如下圖:三、實(shí)驗(yàn)步驟1、創(chuàng)建一個(gè)新項(xiàng)目利用Developer Studio的AppWizard創(chuàng)建一個(gè)新的項(xiàng)目,步驟如下:1. 選擇菜單File|New,系統(tǒng)將顯

29、示New對(duì)話框2. 選擇Projects標(biāo)簽,在顯示的項(xiàng)目類型中選擇MFC AppWizard(exe)3. 在右邊的Project Name編輯框中輸入項(xiàng)目名稱,如“helloMFC”,然后按OK4. MFC AppWizard 將分幾步詢問(wèn)你有關(guān)要建立的新項(xiàng)目的配置。第一個(gè)對(duì)話框問(wèn)你是創(chuàng)建哪種類型的應(yīng)用(單文檔、多文檔還是對(duì)話框類型),選擇創(chuàng)建單文檔應(yīng)用“Single document”,然后按Next按鈕5. 翻過(guò)后面的五個(gè)頁(yè)面(按Next),每個(gè)頁(yè)面可以讓你改變項(xiàng)目的不同選項(xiàng),這個(gè)例子暫時(shí)不設(shè)置這些選項(xiàng)。6. 最后一個(gè)MFC AppWizard屏幕告訴你App Wizard為你自動(dòng)產(chǎn)生

30、的類。單擊Finish鍵,AppWizard顯示一個(gè)關(guān)于該項(xiàng)目的摘要,列出這些類和你所選擇的特征。如圖所示:圖5-1 最后一個(gè)MFC AppWizard屏幕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ì)打開,工作區(qū)窗口(如下圖):圖5-2 打開helloMFC項(xiàng)目后的工作區(qū)窗口你可以先選擇FileView看一下AppWizard為你創(chuàng)建了哪些文件,然后選擇ClassView看一下定義了哪些類。ClassView中還可以看到一個(gè)Globals文件夾,單擊它前面的加號(hào),可以

31、看到,有一個(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é)果如下:圖5-3 編譯連接運(yùn)行的結(jié)果4、用MFC處理輸出現(xiàn)在修改程序。要在程序中間的窗口上顯示一行文字“Hello, World” ,步驟如下:1、 在工作區(qū)窗口中選擇ClassView標(biāo)簽,單擊helloMFC classes前面的加號(hào)(如果已經(jīng)變成減號(hào)則不做此操作)1、 單擊類CHelloMFCView類前

32、面的加號(hào)1、 雙擊OnDraw()函數(shù),在右邊的文檔將顯示窗口顯示文件helloMFCView的內(nèi)容,并且自動(dòng)將光標(biāo)定位到函數(shù)OnDraw()處。1、 修改OnDraw函數(shù)的定義,在最后一行加一句:pDC->TextOut(50,50,"Hello, World");1、 按Ctrl+s或者選菜單File|Save來(lái)保存所作的修改5、編譯連接并運(yùn)行重新編譯連接該項(xiàng)目,運(yùn)行程序,也可以用Ctrl+F5直接運(yùn)行程序,系統(tǒng)將詢問(wèn)是否重新編譯該項(xiàng)目,回答“是(Yes)”,如果有編譯錯(cuò)誤,仔細(xì)檢查你加的一句話,是否有錯(cuò)。當(dāng)編譯連接通過(guò)后,系統(tǒng)會(huì)自動(dòng)運(yùn)行該程序。查看結(jié)果。三實(shí)驗(yàn)要

33、求1、寫出程序,并調(diào)試程序,要給出測(cè)試數(shù)據(jù)和實(shí)驗(yàn)結(jié)果。2、整理上機(jī)步驟,總結(jié)經(jīng)驗(yàn)和體會(huì)。3、完成實(shí)驗(yàn)報(bào)告和上交程序。實(shí)驗(yàn)九 消息處理一、實(shí)驗(yàn)?zāi)康?、 掌握MFC中消息映射的機(jī)制;2、 學(xué)習(xí)手動(dòng)添加消息映射函數(shù)的方法。二、實(shí)驗(yàn)內(nèi)容1、在單文檔應(yīng)用程序中添加鼠標(biāo)左鍵消息處理函數(shù),實(shí)現(xiàn)在視圖中繪制橢圓消息映射簡(jiǎn)單說(shuō)明:當(dāng)用戶在視圖窗口中按下鼠標(biāo)左鍵時(shí),Windows發(fā)送一個(gè)消息,即WM_LBUTTONDOW消息到這個(gè)窗口。如果程序需要對(duì)WM_LBUTTONDOW做出響應(yīng),視圖類必須有一個(gè)類似如下的成員函數(shù):void Cex6View:OnLButtonDown(UINT nFlags, CPoint

34、 point) / TODO: Add your message handler code here and/or call default在類頭文件中,也必須有相應(yīng)的原型說(shuō)明:afx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg標(biāo)志是一個(gè)“非運(yùn)算符”,警告這是消息映射函數(shù)的原型。然后在代碼文件中,還需要一個(gè)消息映射宏,把OnLButtonDown函數(shù)連接到應(yīng)用程序框架上。BEGIN_MESSAGE_MAP(CEx4View, CView)/AFX_MSG_MAP(CEx4View)ON_WM_LBUTTONDOWN()/A

35、FX_MSG_MAPEND_MESSAGE_MAP()最后在類的頭文件中需要使用如下語(yǔ)句:DECLARE_MESSAGE_MAP()以上代碼都可以用Visual C+提供的ClassWizard工具,它自動(dòng)對(duì)大多數(shù)消息生成響應(yīng)函數(shù),并在相應(yīng)位置添加如上所示的代碼。具體步驟如下:1、使用AppWizard生成名為Ex6的SDI工程。2、添加m_rectEllipse和m_nColor數(shù)據(jù)成員到CEx4View:把Workspace窗口設(shè)置為ClassWizard,右擊Cex6View,選定Add Member Variable,然后插入如下兩個(gè)數(shù)據(jù)成員:Private:Crect m_rectE

36、llipse;Int m_nColor;3、 使用ClassWizard添加Cex6View類消息處理程序:按下Ctrl+W,出現(xiàn)MFC ClassWizard對(duì)話框時(shí),確保選定CEx4View類,如下圖所示?,F(xiàn)在,在Object IDs列表框的頂部單擊Cex6View,然后,在消息列表框中滾動(dòng)虛函數(shù),并雙擊WM_LBUTTONDOWN。OnLButttonDown函數(shù)名應(yīng)當(dāng)出現(xiàn)在Member Functions列表框內(nèi)部。 圖6-1 MFC ClassWizard 窗口確定后,在Ex6View.cpp和Ex6View.h以下位置就會(huì)添加加黑的代碼:/Ex6View.hprotected:/A

37、FX_MSG(Cex6View)afx_msg void OnLButtonDown(UINT nFlags, CPoint point);/AFX_MSGDECLARE_MESSAGE_MAP()/Ex4View.cppBEGIN_MESSAGE_MAP(Cex6View, CView)/AFX_MSG_MAP(Cex6View)ON_WM_LBUTTONDOWN()/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIREC

38、T, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP()void Cex6View:OnLButtonDown(UINT nFlags, CPoint point) 4、在Ex6View.cpp中編輯OnLButttonDown代碼,如下:void Cex6View:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call d

39、efaultif(m_rectEllipse.PtInRect(point)if(m_nColor=GRAY_BRUSH)m_nColor=WHITE_BRUSH;elsem_nColor=GRAY_BRUSH;InvalidateRect(m_rectEllipse);5、在Ex6View.cpp中編輯構(gòu)造函數(shù)和OnDraw函數(shù),如下:Cex6View:Cex6View():m_rectEllipse(0,0,200,200)m_nColor=GRAY_BRUSH;.void Cex6View:OnDraw(CDC* pDC)pDC->SelectStockObject(m_nColo

40、r);pDC->Ellipse(m_rectEllipse);6、建立并運(yùn)行程序。2、在對(duì)話框中添加自定義消息函數(shù),實(shí)現(xiàn)動(dòng)態(tài)按鈕。步驟如下:1) 建立一個(gè)基于對(duì)話框的MFC工程.2) 在對(duì)話框中添加動(dòng)態(tài)按鈕。(1) 建立控件ID號(hào):ID號(hào)是控件的標(biāo)識(shí),創(chuàng)建控件前必須先為它設(shè)置一個(gè)ID號(hào)。打開資源中的“String Table”,在空白行上雙擊鼠標(biāo),這時(shí)會(huì)彈出一個(gè)ID屬性對(duì)話框,在其中的ID編輯框中輸入ID,如:IDC_MYBUTTON,在Caption中輸入控件標(biāo)題或注解(注:Caption框不能為空,為空會(huì)導(dǎo)致創(chuàng)建失敗),這里我輸入的是按鈕上要顯示的文字-動(dòng)態(tài)按鈕。(2)在OnInitDialog()函數(shù)中添加如下代碼:用new調(diào)用CButton構(gòu)造函數(shù)生成一個(gè)實(shí)例:CButton *p_MyBut = new CButton();然后用CButton類的Create()函數(shù)創(chuàng)建: p_MyBut->Create

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論