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

下載本文檔

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

文檔簡介

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

2、單命令 ;4、 學(xué)習(xí)使用VC+環(huán)境的幫助 ;5、 學(xué)習(xí)完整的C+程序開發(fā)過程 ;6、 理解簡單的C+程序結(jié)構(gòu) 二、實驗內(nèi)容 使用Visual C+ 6.0集成環(huá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的值返回,通過max帶回調(diào)用處 三、實驗步驟Visual C+ 6.0啟動后的用戶界面 選擇菜單“開始/程序/Microsoft Vis

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

5、Step 1 of 1” 對話框中選擇An empty project單選項。然后單擊“Finish”按鈕,如圖1-3所示。圖1-3 “Win32 Consol Application-Step 1 of 1” 對話框(4)在“新建工程信息”對話框中單擊“確認”按鈕,完成工程創(chuàng)建過程。2、創(chuàng)建C+源程序文件(1)編輯C+源程序:編輯C+源程序時,選擇“文件”菜單項,出現(xiàn)一個下拉式菜單,再選擇該菜單中的“新建”選項(熱鍵為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編譯連接和運行源程序(1)選擇菜單項“編譯”,出現(xiàn)“編譯”的下拉菜單,在該下拉式菜單中選擇“編譯 eg1-1.cpp”菜單項,這時系統(tǒng)開始對當(dāng)前的源程序進行編譯,在編譯過程中,將所發(fā)現(xiàn)的錯誤顯示在屏幕下方的“編譯”窗口中。所顯示的錯誤信息中指出該錯誤所在行號和該錯誤的性質(zhì)。用戶可根據(jù)這些錯誤信息進行修改。上述程序的“編譯”窗口,如圖1-7所示:圖1-7 “編輯”窗口(2)編譯無錯誤后,可進行連接生成

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

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

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

10、 while () 結(jié)束本次循環(huán)語句:continue 終止執(zhí)行switch或循環(huán)語句:break 多分支選擇語句:switch()case1;case2 ;default; 從函數(shù)返回語句:return三、實驗內(nèi)容及步驟1 輸入并運行下列程序并分析其功能。main() int t,a,b,c,d;cout<<“請輸入四個數(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è)計程序找出1100 間的質(zhì)數(shù),顯示出來。用for 或while 或do-while循環(huán)語句實現(xiàn)。3下面程序統(tǒng)計字符數(shù)組c 中0、1、2及其他字符出現(xiàn)的次數(shù),分別存放在變量i0、i1、i2中,統(tǒng)計結(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();實驗三 類的定義和使用一、實驗?zāi)康?1、 理解面向?qū)ο蟪绦蛟O(shè)計方法的基本原理及主要特點抽象、封裝、繼承和多態(tài)。 2、 理解類和對象的概念以及如何利用類來解決具體問題。 二、實驗內(nèi)容1、 掌握面向?qū)ο蟮某绦蛟O(shè)計思想 2、 掌握類的定義。 3、 掌握對象的聲明和引用。 4、 掌握具有不同訪問屬性的成員的訪問方式 5、 觀察構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行過程。三、實驗步驟 構(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; 編譯、連接并運行程序四、實驗要求1、 寫出程序,并調(diào)試程序,要給出測試數(shù)據(jù)和實驗結(jié)果。2、 整理上機步驟,總結(jié)經(jīng)驗和體會。3、 完成實驗

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

17、。 先執(zhí)行所有基類的構(gòu)造函數(shù)(順序按照定義派生類時指定的各基關(guān)順序) 再執(zhí)行對象成員所在類的構(gòu)造函數(shù)(順序按照它們在類中的聲明順序) 最后執(zhí)行派生類構(gòu)造函數(shù)體中的內(nèi)容。 三、實驗步驟 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; 編譯、連接并運行程序四、實驗要求1. 寫出程序,并調(diào)試程序,要給出測試數(shù)據(jù)和實驗結(jié)果。2. 整理上機步驟,總結(jié)經(jīng)驗和體會。3. 完成實驗報告和上交程序。實驗五 多態(tài)性程序設(shè)計一實驗?zāi)康?1、 理解多態(tài)性的基本概念;2、 掌握虛函數(shù)和純虛函數(shù)的概念;3、 了解抽象類的概念。 二實驗內(nèi)容1、理解多態(tài)性的基本思想。2、學(xué)習(xí)使用虛函數(shù)實現(xiàn)動態(tài)多態(tài)性。

20、三、實驗步驟 多態(tài)性編程實例 #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); 編譯、連接并運行程序四實驗要求1. 寫出程序,并調(diào)試程序,要給出測試數(shù)據(jù)和實驗結(jié)果。2. 整理上機步驟,總結(jié)經(jīng)驗和體會。3. 完成實驗報告和上交程序。

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

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

24、容及步驟1分析教程“函數(shù)模板”中的例子,自行設(shè)計一個簡單的類模板。2分析教程“運算符重載”中的例子,自行設(shè)計一個簡單的重載運算符。3指出下面程序中的錯誤,改正并運行。#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;實驗七 文件操作一、實驗?zāi)康?掌握基本的輸入輸出操作及格式;2用C+預(yù)定義的文件I/O類進行文件輸入輸出。二、知識要點文件操作:打開文件、讀寫文件、關(guān)閉文件。低層次I/O機制:int creat()、int open()、int close()、int read()、int write()高層次I/O機制:字符I/O函數(shù)getchar()、字符串I/O函數(shù)gets()、格式化I/O函數(shù)printf()流類庫:streambuf類、ios類、ostream類、istream類、iostream類三、實驗內(nèi)容及步驟1使用I/O流

26、以文本方式建立一個文件test1.txt,寫入字符“已成功寫入!”#include<fstream.h>void main() ofstream file1(“test1.txt”);file1<<”已成功寫入!”;file1.close();模仿以上程序,編制一段源程序,使用I/O流以文本方式打開test1.txt,讀出內(nèi)容并顯示出來。2設(shè)字符串string=”1 2 3 4 5 6 7 8 9”,用串I/O的方法編程逐個讀取這個串的每個數(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;實驗八 利用AppWizard向?qū)蒞indows應(yīng)用程序一、實驗?zāi)康膶W(xué)習(xí)利用Appwizard向?qū)ч_發(fā)Windows應(yīng)用程序的過程。二、實驗內(nèi)容術(shù)語:AppWizard是一個工具,利用該工具,你可以創(chuàng)建一個建立在MFC基礎(chǔ)上的窗口應(yīng)用程序框架,然后在這個框架中加上自己的

28、應(yīng)用邏輯。你可以選擇所創(chuàng)建的應(yīng)用類型,最常用的是多文檔應(yīng)用(就象你用的字編輯器Microsoft Word一樣,可以同時打開多個文檔窗口的應(yīng)用)、單文檔應(yīng)用(類似于Windows提供的notepad,一次只能打開一個文檔)和對話框應(yīng)用(類似于Windows的時鐘程序)。1、用AppWizard建立一個單文檔應(yīng)用程序,在窗口中輸出”Hello,World!”2、用AppWizard建立一個對話框應(yīng)用程序,在對話框上擺放相應(yīng)控件。程序結(jié)果如下圖:三、實驗步驟1、創(chuàng)建一個新項目利用Developer Studio的AppWizard創(chuàng)建一個新的項目,步驟如下:1. 選擇菜單File|New,系統(tǒng)將顯

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

30、的類。單擊Finish鍵,AppWizard顯示一個關(guān)于該項目的摘要,列出這些類和你所選擇的特征。如圖所示:圖5-1 最后一個MFC AppWizard屏幕7. 單擊OK,系統(tǒng)自動產(chǎn)生helloMFC所需要的文件。2、瀏覽helloMFC項目當(dāng)你用MFC AppWizard創(chuàng)建了helloMFC項目后,這個項目的工作區(qū)窗口將會打開,工作區(qū)窗口(如下圖):圖5-2 打開helloMFC項目后的工作區(qū)窗口你可以先選擇FileView看一下AppWizard為你創(chuàng)建了哪些文件,然后選擇ClassView看一下定義了哪些類。ClassView中還可以看到一個Globals文件夾,單擊它前面的加號,可以

31、看到,有一個預(yù)定義的全局變量theApp,這是你的Windows應(yīng)用程序類的對象。3、編譯連接運行按F7或者選擇菜單Build|Build helloMFC.exe,編譯連接得到可執(zhí)行程序,再按Ctrl+F5或者選擇Build|Execute helloMFC.exe運行該程序。程序的結(jié)果如下:圖5-3 編譯連接運行的結(jié)果4、用MFC處理輸出現(xiàn)在修改程序。要在程序中間的窗口上顯示一行文字“Hello, World” ,步驟如下:1、 在工作區(qū)窗口中選擇ClassView標(biāo)簽,單擊helloMFC classes前面的加號(如果已經(jīng)變成減號則不做此操作)1、 單擊類CHelloMFCView類前

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

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

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

35、FX_MSG_MAPEND_MESSAGE_MAP()最后在類的頭文件中需要使用如下語句:DECLARE_MESSAGE_MAP()以上代碼都可以用Visual C+提供的ClassWizard工具,它自動對大多數(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,然后插入如下兩個數(shù)據(jù)成員:Private:Crect m_rectE

36、llipse;Int m_nColor;3、 使用ClassWizard添加Cex6View類消息處理程序:按下Ctrl+W,出現(xiàn)MFC ClassWizard對話框時,確保選定CEx4View類,如下圖所示?,F(xiàn)在,在Object IDs列表框的頂部單擊Cex6View,然后,在消息列表框中滾動虛函數(shù),并雙擊WM_LBUTTONDOWN。OnLButttonDown函數(shù)名應(yīng)當(dāng)出現(xiàn)在Member Functions列表框內(nèi)部。 圖6-1 MFC ClassWizard 窗口確定后,在Ex6View.cpp和Ex6View.h以下位置就會添加加黑的代碼:/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、建立并運行程序。2、在對話框中添加自定義消息函數(shù),實現(xiàn)動態(tài)按鈕。步驟如下:1) 建立一個基于對話框的MFC工程.2) 在對話框中添加動態(tài)按鈕。(1) 建立控件ID號:ID號是控件的標(biāo)識,創(chuàng)建控件前必須先為它設(shè)置一個ID號。打開資源中的“String Table”,在空白行上雙擊鼠標(biāo),這時會彈出一個ID屬性對話框,在其中的ID編輯框中輸入ID,如:IDC_MYBUTTON,在Caption中輸入控件標(biāo)題或注解(注:Caption框不能為空,為空會導(dǎo)致創(chuàng)建失?。@里我輸入的是按鈕上要顯示的文字-動態(tài)按鈕。(2)在OnInitDialog()函數(shù)中添加如下代碼:用new調(diào)用CButton構(gòu)造函數(shù)生成一個實例:CButton *p_MyBut = new CButton();然后用CButton類的Create()函數(shù)創(chuàng)建: p_MyBut->Create

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論