第2章 開發(fā)環(huán)境簡介_第1頁
第2章 開發(fā)環(huán)境簡介_第2頁
第2章 開發(fā)環(huán)境簡介_第3頁
第2章 開發(fā)環(huán)境簡介_第4頁
第2章 開發(fā)環(huán)境簡介_第5頁
已閱讀5頁,還剩96頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、-2-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介 2.1 C+2.1 C+語言基礎(chǔ)語言基礎(chǔ) 2.2 MFC2.2 MFC編程編程 2.3 SQL2.3 SQL基礎(chǔ)基礎(chǔ) 2.4 Pro2.4 Pro* *C/C+C/C+程序開發(fā)程序開發(fā) 2.5 ADO2.5 ADO數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問 2.6 2.6 編程規(guī)范編程規(guī)范 本章小結(jié)本章小結(jié)目目 錄錄-3-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介2.1 C+2.1 C+語言基礎(chǔ)語言基礎(chǔ) Microsoft Visual C+ Microsoft Visual C+(簡稱(簡稱Visual C+Visual C+、MSVCMSVC、VC+VC+或或VCV

2、C)是微)是微軟公司推出的面向?qū)ο蟮能浌就瞥龅拿嫦驅(qū)ο蟮腤in32Win32程序可視化集成開發(fā)環(huán)境,可提供編輯程序可視化集成開發(fā)環(huán)境,可提供編輯C C語言,語言,C+C+語言以及語言以及C+/CLIC+/CLI等編程語言。通過等編程語言。通過AppWizardAppWizard工具可以自動工具可以自動生成程序框架,并且通過簡單設(shè)置可使程序框架支持?jǐn)?shù)據(jù)庫接口、生成程序框架,并且通過簡單設(shè)置可使程序框架支持?jǐn)?shù)據(jù)庫接口、ActiveXActiveX控件、控件、WinSockWinSock以及以及3D3D控件等。控件等。2.1.1 C+2.1.1 C+數(shù)據(jù)類型數(shù)據(jù)類型基本數(shù)據(jù)類型基本數(shù)據(jù)類型 C99

3、 C99標(biāo)準(zhǔn)中標(biāo)準(zhǔn)中C+C+語言提供的基本數(shù)據(jù)類型如下:語言提供的基本數(shù)據(jù)類型如下: v布爾型:布爾型:boolboolv字符型:字符型:charcharv整型:整型:shortshort、intint、longlongv浮點型:浮點型:floatfloat、doubledoublev空類型:空類型:voidvoid-4-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介說明:說明:v 類型修飾符類型修飾符signedsigned和和unsignedunsigned可用于修飾字符型和整型,當(dāng)它可用于修飾字符型和整型,當(dāng)它們修飾們修飾intint時可省略時可省略intint。v voidvoid類型不能用

4、來定義變量,通常用于對函數(shù)返回值和函數(shù)參類型不能用來定義變量,通常用于對函數(shù)返回值和函數(shù)參數(shù)的限定,也可以定義無類型通用指針數(shù)的限定,也可以定義無類型通用指針void void * *,用來指向任何,用來指向任何類型的數(shù)據(jù)。類型的數(shù)據(jù)。v 各基本數(shù)據(jù)類型對應(yīng)字節(jié)數(shù)和數(shù)值范圍由操作系統(tǒng)和編譯平臺各基本數(shù)據(jù)類型對應(yīng)字節(jié)數(shù)和數(shù)值范圍由操作系統(tǒng)和編譯平臺決定。決定。v 例如:例如:3232位機上,位機上,sizeof(intsizeof(int)=4)=4,sizeof(longsizeof(long)=4)=4,而,而6464位位機上,機上,sizeof(longsizeof(long)=8)=8。

5、對于指針類型,在。對于指針類型,在3232位機上的字節(jié)數(shù)位機上的字節(jié)數(shù)為為4 4,而在,而在6464位機上的字節(jié)數(shù)為位機上的字節(jié)數(shù)為8 8。-5-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介枚舉類型枚舉類型v 當(dāng)某個變量的取值是幾種可能存在的值時,可以將其取值一一列舉當(dāng)某個變量的取值是幾種可能存在的值時,可以將其取值一一列舉出來,以此定義為枚舉類型。出來,以此定義為枚舉類型。v 枚舉類型的定義形式為:枚舉類型的定義形式為: enum ;v 系統(tǒng)對枚舉元素是按照常量來處理的,枚舉元素也稱為枚舉常量,系統(tǒng)對枚舉元素是按照常量來處理的,枚舉元素也稱為枚舉常量,系統(tǒng)默認(rèn)從系統(tǒng)默認(rèn)從0 0開始遞增賦值。用戶

6、可以在定義枚舉類型時對枚舉元開始遞增賦值。用戶可以在定義枚舉類型時對枚舉元素進行賦值。素進行賦值。v 當(dāng)定義了枚舉類型后,就可以定義該枚舉類型的變量,系統(tǒng)允許對當(dāng)定義了枚舉類型后,就可以定義該枚舉類型的變量,系統(tǒng)允許對枚舉變量進行賦值操作。例如:枚舉變量進行賦值操作。例如: #include using namespace std; void main() enum workdaySun=1, Mon, Tue, Wen, Thu, Fri, Sat; workday day; day = Wen; coutdayendl; -6-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介結(jié)構(gòu)體結(jié)構(gòu)體結(jié)構(gòu)體類型

7、的定義形式:結(jié)構(gòu)體類型的定義形式:struct ;v 當(dāng)結(jié)構(gòu)體定義好后,可以直接使用該結(jié)構(gòu)體名定義變量,而不用當(dāng)結(jié)構(gòu)體定義好后,可以直接使用該結(jié)構(gòu)體名定義變量,而不用在其前加標(biāo)識符在其前加標(biāo)識符structstruct。對結(jié)構(gòu)體的訪問,可以整體處理,也可。對結(jié)構(gòu)體的訪問,可以整體處理,也可對成員進行訪問。例如:對成員進行訪問。例如: #include using namespace std; void main() struct Student long number; char name10; char sex; ; Student stu = 10001, 李三妹李三妹, F; couts

8、endl; -7-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介2.1.2 2.1.2 基本語句基本語句賦值語句賦值語句 v 賦值語句的一般格式為:賦值語句的一般格式為: ;自增減表達式語句自增減表達式語句v 由自增運算符由自增運算符+和自減運算符和自減運算符-可構(gòu)成自增減表達式語句,可使可構(gòu)成自增減表達式語句,可使變量的值加變量的值加1 1或減或減1 1。包括兩種形式:。包括兩種形式:前綴形式:前綴形式:+i+i, -i -i 先改變先改變i i的值,再使用的值,再使用i i的值。的值。后綴形式:后綴形式:i+i+,i-i- 先使用先使用i i的值,再改變的值,再改變i i的值。例如

9、:的值。例如: int i = 3, j, k; j = i+; k = +i; couti, j, kendl; -8-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介分支語句分支語句v 分支語句用于實現(xiàn)選擇結(jié)構(gòu)程序設(shè)計,包括分支語句用于實現(xiàn)選擇結(jié)構(gòu)程序設(shè)計,包括ifelseifelse語句和語句和switchswitch語句。語句。v 常用的五種語法形式如下:常用的五種語法形式如下:if() if () else if() else if() else if() else -9-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介if() if( ) if() else else if( ) else swi

10、tch(表達式表達式) case : case : case : default: -10-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介v當(dāng)表達式的值為非零數(shù)值時,按當(dāng)表達式的值為非零數(shù)值時,按“真真”處理。當(dāng)處理語句多于一處理。當(dāng)處理語句多于一條時,通常需要用花括號條時,通常需要用花括號“”“”將其括起來構(gòu)成復(fù)合語句。將其括起來構(gòu)成復(fù)合語句。vswitchswitch后面的后面的“表達式表達式”可為任何類型,可為任何類型,casecase后面的后面的“常量表達常量表達式式”只是起語句標(biāo)號作用,并不在該處進行條件判斷。只是起語句標(biāo)號作用,并不在該處進行條件判斷。v當(dāng)找到匹配的標(biāo)號后按順序執(zhí)行其后的

11、所有語句,因此,為了實當(dāng)找到匹配的標(biāo)號后按順序執(zhí)行其后的所有語句,因此,為了實現(xiàn)只對某一個分支進行處理,需要在其現(xiàn)只對某一個分支進行處理,需要在其casecase語句末尾使用語句末尾使用breakbreak語語句。句。循環(huán)語句循環(huán)語句v循環(huán)語句用于實現(xiàn)循環(huán)結(jié)構(gòu)程序設(shè)計,包括循環(huán)語句用于實現(xiàn)循環(huán)結(jié)構(gòu)程序設(shè)計,包括whilewhile語句、語句、do- do- whilewhile語句和語句和forfor語句三種。常用的語句形式如下:語句三種。常用的語句形式如下:while() do while();-11-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介for(; ; ) v 當(dāng)循環(huán)體包括多條語句時,需

12、要用花括號當(dāng)循環(huán)體包括多條語句時,需要用花括號“”“”將其括起來構(gòu)將其括起來構(gòu)成復(fù)合語句。成復(fù)合語句。v forfor語句的執(zhí)行過程為:語句的執(zhí)行過程為:Step1: Step1: 求解表達式求解表達式1 1。Step2: Step2: 求解表達式求解表達式2 2,若值為真則執(zhí)行循環(huán)體,若值為真則執(zhí)行循環(huán)體, 然后執(zhí)行然后執(zhí)行Step3Step3;若值為假則結(jié)束循環(huán);若值為假則結(jié)束循環(huán), 轉(zhuǎn)到轉(zhuǎn)到Step5Step5。Step3: Step3: 求解表達式求解表達式3 3。Step4: Step4: 轉(zhuǎn)到轉(zhuǎn)到Step2Step2 。Step5: Step5: 循環(huán)結(jié)束,執(zhí)行循環(huán)結(jié)束,執(zhí)行for

13、for語句下面的一個語句。語句下面的一個語句。-12-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介流程控制語句流程控制語句v breakbreak語句語句一般形式為:一般形式為:break;在在switchswitch語句中語句中breakbreak語句可以使流程跳出語句可以使流程跳出switchswitch結(jié)構(gòu),繼續(xù)結(jié)構(gòu),繼續(xù)執(zhí)行執(zhí)行switchswitch語句下面的一個語句。語句下面的一個語句。在循環(huán)結(jié)構(gòu)中在循環(huán)結(jié)構(gòu)中breakbreak語句可以使流程從循環(huán)體內(nèi)跳出本層循環(huán)語句可以使流程從循環(huán)體內(nèi)跳出本層循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行本層循環(huán)下面的語句。體,即提前結(jié)束循環(huán),接著執(zhí)行本層循環(huán)下

14、面的語句。v continuecontinue語句語句一般形式為:一般形式為:continue;在循環(huán)結(jié)構(gòu)中在循環(huán)結(jié)構(gòu)中continuecontinue語句用來結(jié)束本次循環(huán)。即跳過語句用來結(jié)束本次循環(huán)。即跳過continuecontinue下面的尚未執(zhí)行的語句,接著進行條件判斷而決定是下面的尚未執(zhí)行的語句,接著進行條件判斷而決定是否執(zhí)行下一次循環(huán)。否執(zhí)行下一次循環(huán)。-13-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介2.1.3 2.1.3 注釋注釋C+C+語言中有兩種注釋符:語言中有兩種注釋符:v “/”“/”:通常用于對單行進行注釋,因此也稱為單行注釋符。:通常用于對單行進行注釋,因此也稱為單行

15、注釋符。v “/“/* * */”/”:稱為塊注釋符或多行注釋符,可以對任意行進行:稱為塊注釋符或多行注釋符,可以對任意行進行注釋。注釋。在進行多行注釋時,也可以逐行使用在進行多行注釋時,也可以逐行使用“/”“/”。特別要注意的是,使用。特別要注意的是,使用“/“/* * */”/”時不要進行嵌套。時不要進行嵌套。2.1.4 2.1.4 引用引用引用是引用是C+C+語言新增的一個類型,用標(biāo)識符語言新增的一個類型,用標(biāo)識符& &表示。引用是給變量或?qū)Ρ硎尽R檬墙o變量或?qū)ο笃鹨粋€別名。象起一個別名。引用變量的定義形式為:引用變量的定義形式為: & = ; 例如:例如: i

16、nt x=10, &y=x;-14-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介2.1.5 2.1.5 函數(shù)函數(shù)函數(shù)的一般形式為:函數(shù)的一般形式為:類型名類型名 函數(shù)名函數(shù)名(形參表形參表) 函數(shù)體函數(shù)體v函數(shù)的返回值通常由函數(shù)的返回值通常由returnreturn語句獲得。語句獲得。vreturnreturn語句將被調(diào)用函數(shù)中的一個確定值帶回到主調(diào)函數(shù)中。語句將被調(diào)用函數(shù)中的一個確定值帶回到主調(diào)函數(shù)中。v一個函數(shù)中可以有一個以上的一個函數(shù)中可以有一個以上的returnreturn語句,但只能有一個語句,但只能有一個return return 語句被執(zhí)行。語句被執(zhí)行。vreturnretu

17、rn語句返回的函數(shù)值類型應(yīng)與定義函數(shù)時說明的函數(shù)類型語句返回的函數(shù)值類型應(yīng)與定義函數(shù)時說明的函數(shù)類型一致。一致。-15-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介輸出型參數(shù)輸出型參數(shù)v 當(dāng)函數(shù)有多個處理結(jié)果同時要傳給上層調(diào)用者時,當(dāng)函數(shù)有多個處理結(jié)果同時要傳給上層調(diào)用者時,returnreturn語句就語句就不能滿足需求,此時可設(shè)計函數(shù)的參數(shù)為輸出型參數(shù)。不能滿足需求,此時可設(shè)計函數(shù)的參數(shù)為輸出型參數(shù)。v 函數(shù)實現(xiàn)輸出型參數(shù)是通過傳地址方式進行的。具體包括兩種方函數(shù)實現(xiàn)輸出型參數(shù)是通過傳地址方式進行的。具體包括兩種方法:法:將形參設(shè)計為指針類型。將形參設(shè)計為指針類型。 將形參設(shè)計為引用類型。將形

18、參設(shè)計為引用類型。例如,設(shè)計一個函數(shù)求球體的表面積和體積。例如,設(shè)計一個函數(shù)求球體的表面積和體積。void Sphere_1(float r, float *s, float *v) *s = 3.14*r*r; *v = 4*3.14*r*r*r/3;void Sphere_2(float r, float &s, float &v) s = 3.14*r*r; v = 4*3.14*r*r*r/3;-16-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介 調(diào)用形式為:調(diào)用形式為: float radius=10, area1, volume1, area2, volume2; Sp

19、here_1(radius, &area1, &volume1); Sphere_2(radius, area2, volume2);當(dāng)大型對象被傳遞給函數(shù)時,使用引用參數(shù)可使參數(shù)傳遞效當(dāng)大型對象被傳遞給函數(shù)時,使用引用參數(shù)可使參數(shù)傳遞效率得到提高,因為引用并不產(chǎn)生對象的副本,也就是參數(shù)傳率得到提高,因為引用并不產(chǎn)生對象的副本,也就是參數(shù)傳遞時,對象無須復(fù)制。遞時,對象無須復(fù)制。帶缺省參數(shù)的函數(shù)帶缺省參數(shù)的函數(shù)v在進行函數(shù)定義時,在進行函數(shù)定義時,C+C+語言允許參數(shù)可以帶默認(rèn)值。例如:語言允許參數(shù)可以帶默認(rèn)值。例如: void Sphere_3(float &s,fl

20、oat &v, float r=10,char*color=red); v當(dāng)進行函數(shù)調(diào)用時,編譯器按從左向右順序?qū)崊⑴c形參結(jié)合,當(dāng)進行函數(shù)調(diào)用時,編譯器按從左向右順序?qū)崊⑴c形參結(jié)合,若調(diào)用語句未給出該形參對應(yīng)的實參,則按該形參的默認(rèn)值調(diào)用若調(diào)用語句未給出該形參對應(yīng)的實參,則按該形參的默認(rèn)值調(diào)用該函數(shù)。例如:該函數(shù)。例如: Sphere_3(area2, volume2, 100); 相當(dāng)于:相當(dāng)于: Sphere_2(area2, volume2, 100, red);-17-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介v 注意:注意:設(shè)計函數(shù)帶缺省參數(shù)時,所有取缺省值的參數(shù)都必須出現(xiàn)

21、在設(shè)計函數(shù)帶缺省參數(shù)時,所有取缺省值的參數(shù)都必須出現(xiàn)在不取缺省值的參數(shù)的右邊。不取缺省值的參數(shù)的右邊。在調(diào)用帶缺省參數(shù)的函數(shù)時,若某個參數(shù)省略,則其后的參在調(diào)用帶缺省參數(shù)的函數(shù)時,若某個參數(shù)省略,則其后的參數(shù)皆應(yīng)省略而采用缺省值。例如:數(shù)皆應(yīng)省略而采用缺省值。例如: Sphere_3(area2, volume2); /正確正確Sphere_3(area2, volume2, “blue”); /錯誤錯誤函數(shù)重載函數(shù)重載v 函數(shù)重載指在同一個作用域內(nèi),多個函數(shù)可以使用相同的函數(shù)名函數(shù)重載指在同一個作用域內(nèi),多個函數(shù)可以使用相同的函數(shù)名,而參數(shù)個數(shù)或參數(shù)類型不同。而參數(shù)個數(shù)或參數(shù)類型不同。v 被

22、重載的函數(shù)稱為重載函數(shù),通常一組重載函數(shù)應(yīng)實現(xiàn)相似的功被重載的函數(shù)稱為重載函數(shù),通常一組重載函數(shù)應(yīng)實現(xiàn)相似的功能。能。v 在設(shè)計重載函數(shù)時必須在參數(shù)列表部分相區(qū)別,而與返回值類型在設(shè)計重載函數(shù)時必須在參數(shù)列表部分相區(qū)別,而與返回值類型無關(guān)。無關(guān)。v 當(dāng)存在多個重載函數(shù)時,系統(tǒng)對重載函數(shù)的調(diào)用會自動進行匹配。當(dāng)存在多個重載函數(shù)時,系統(tǒng)對重載函數(shù)的調(diào)用會自動進行匹配。-18-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介例如:定義如下三個重載函數(shù)。例如:定義如下三個重載函數(shù)。 int mul(int x, int y) / return x*y; int mul(int x, int y, int z)

23、 /return x*y*z; float mul(int x, float y) / return x*y;測試代碼如下:測試代碼如下: void main() int a=3, b=4, c=5; float d=2.5; coutmul(a,b)endl; /調(diào)用調(diào)用 coutmul(a,b,c)endl; /調(diào)用調(diào)用 coutmul(a,d)endl; /調(diào)用調(diào)用 -19-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介v 注意:注意: 在函數(shù)重載時最好不要使用缺省參數(shù),否則可引起二義性。在函數(shù)重載時最好不要使用缺省參數(shù),否則可引起二義性。 例如,在上例中若:例如,在上例中若: int mul

24、(int x, int y, int z=10); 則則 mul(a,b);語句的調(diào)用匹配會出現(xiàn)二義性。語句的調(diào)用匹配會出現(xiàn)二義性。內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)v C+C+中的內(nèi)聯(lián)函數(shù)是用來消除函數(shù)調(diào)用時的時間開銷。它通常用于中的內(nèi)聯(lián)函數(shù)是用來消除函數(shù)調(diào)用時的時間開銷。它通常用于函數(shù)中語句很少,又要頻繁地被調(diào)用的函數(shù)。函數(shù)中語句很少,又要頻繁地被調(diào)用的函數(shù)。v 內(nèi)聯(lián)函數(shù)的定義有兩種情況:內(nèi)聯(lián)函數(shù)的定義有兩種情況:常規(guī)函數(shù)常規(guī)函數(shù)定義常規(guī)函數(shù)時,在函數(shù)名前加上關(guān)鍵字定義常規(guī)函數(shù)時,在函數(shù)名前加上關(guān)鍵字“inline”,該函數(shù)則為內(nèi)聯(lián)函數(shù)。該函數(shù)則為內(nèi)聯(lián)函數(shù)。 例如:例如: inline float circ

25、le(float r) return 3.1416*r*r; -20-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介成員函數(shù)成員函數(shù)在在C+C+中,類的內(nèi)部定義了函數(shù)體的成員函數(shù)默認(rèn)為內(nèi)聯(lián)中,類的內(nèi)部定義了函數(shù)體的成員函數(shù)默認(rèn)為內(nèi)聯(lián)函數(shù)。函數(shù)。當(dāng)在類中只對成員函數(shù)進行聲明,而在類外進行定義時,當(dāng)在類中只對成員函數(shù)進行聲明,而在類外進行定義時,如果在函數(shù)名前加上關(guān)鍵字如果在函數(shù)名前加上關(guān)鍵字“inline”,則該成員函數(shù),則該成員函數(shù)也為內(nèi)聯(lián)函數(shù)。也為內(nèi)聯(lián)函數(shù)。 例如:例如: class Test private: int x; public: void set(int xx) x=xx; /內(nèi)聯(lián)函數(shù)

26、內(nèi)聯(lián)函數(shù) int get(); ; inline int Test :get() /內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù) return x; ; -21-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介v在使用內(nèi)聯(lián)函數(shù)時,應(yīng)注意如下幾點:在使用內(nèi)聯(lián)函數(shù)時,應(yīng)注意如下幾點:在內(nèi)聯(lián)函數(shù)內(nèi)不允許用循環(huán)語句和在內(nèi)聯(lián)函數(shù)內(nèi)不允許用循環(huán)語句和switchswitch語句語句 。遞歸函數(shù)不能定義為內(nèi)聯(lián)函數(shù)遞歸函數(shù)不能定義為內(nèi)聯(lián)函數(shù) 。內(nèi)聯(lián)函數(shù)只適合于只有內(nèi)聯(lián)函數(shù)只適合于只有1 15 5行的小函數(shù)行的小函數(shù) 。內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前。內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前。對內(nèi)聯(lián)函數(shù)不能進行異常的接口

27、聲明。對內(nèi)聯(lián)函數(shù)不能進行異常的接口聲明。-22-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介2.1.6 2.1.6 輸入和輸出輸入和輸出 C+C+語言的語言的I/OI/O流類庫是采用繼承方法建立的一個輸入流類庫是采用繼承方法建立的一個輸入/ /輸出類庫,用輸出類庫,用來實現(xiàn)內(nèi)存和輸入來實現(xiàn)內(nèi)存和輸入/ /輸出設(shè)備之間的數(shù)據(jù)傳送。輸出設(shè)備之間的數(shù)據(jù)傳送。數(shù)據(jù)從源對象到目的對象的傳送被抽象地看做一個數(shù)據(jù)從源對象到目的對象的傳送被抽象地看做一個“流流”。流具有方。流具有方向性,從而可分為:向性,從而可分為:v 輸入流輸入流v 輸出流輸出流v 輸入輸入/ /輸出流輸出流C+C+中預(yù)定義流包括:中預(yù)定義流包

28、括:v 標(biāo)準(zhǔn)輸入流標(biāo)準(zhǔn)輸入流cinv 標(biāo)準(zhǔn)輸出流標(biāo)準(zhǔn)輸出流coutv 非緩沖型的標(biāo)準(zhǔn)出錯流非緩沖型的標(biāo)準(zhǔn)出錯流cerrv 緩沖型的標(biāo)準(zhǔn)出錯流緩沖型的標(biāo)準(zhǔn)出錯流clog。使用預(yù)定義流時需要在程序中添加如下代碼:使用預(yù)定義流時需要在程序中添加如下代碼:#includeusing namespace std;-23-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介輸入運算符輸入運算符v cin對象是系統(tǒng)定義的對象是系統(tǒng)定義的istream類的默認(rèn)對象類的默認(rèn)對象。v istream類中對各種基本數(shù)據(jù)類型重載了輸入運算符類中對各種基本數(shù)據(jù)類型重載了輸入運算符“”,對于基本數(shù)據(jù)類型的數(shù)據(jù),可以直接使用該運算符進

29、行輸入。對于基本數(shù)據(jù)類型的數(shù)據(jù),可以直接使用該運算符進行輸入。例如:例如: int i, j; float f; cinijf;輸出運算符輸出運算符v cout對象是系統(tǒng)定義的對象是系統(tǒng)定義的ostream類的默認(rèn)對象。類的默認(rèn)對象。v ostream類中對各種基本數(shù)據(jù)類型重載了輸出運算符類中對各種基本數(shù)據(jù)類型重載了輸出運算符“”,對于基本數(shù)據(jù)類型的數(shù)據(jù),可以直接使用該運算符進行輸出。對于基本數(shù)據(jù)類型的數(shù)據(jù),可以直接使用該運算符進行輸出。例如:例如: int x=10; coutx=xendl;-24-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介文件操作文件操作v C+C+中文件輸入中文件輸入/

30、/輸出操作的基本過程包括:輸出操作的基本過程包括:在程序中包含頭文件在程序中包含頭文件fstream,并使用,并使用using namespace std語句語句; ;創(chuàng)建一個流;創(chuàng)建一個流;將這個流與文件相關(guān)聯(lián),即打開文件;將這個流與文件相關(guān)聯(lián),即打開文件;進行文件的讀寫操作;進行文件的讀寫操作;關(guān)閉文件。關(guān)閉文件。v 在在fstream.h文件中包含了輸入文件流類文件中包含了輸入文件流類ifstream、輸出文件、輸出文件流類流類ofstream和輸入和輸入/ /輸出文件流類輸出文件流類fstream的定義。的定義。v 當(dāng)創(chuàng)建相應(yīng)流類的對象后,使用輸入當(dāng)創(chuàng)建相應(yīng)流類的對象后,使用輸入/ /

31、輸出運算符或者流類中定義輸出運算符或者流類中定義的讀寫成員函數(shù),就可進行文件的讀的讀寫成員函數(shù),就可進行文件的讀/ /寫操作。寫操作。例如:例如:-25-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介#include using namespace std;void main() ofstream ofs(data.txt);/默認(rèn)打開方式為文本格式默認(rèn)打開方式為文本格式 if(!ofs) cerrcant open file!endl; return; char str1 = How are youn; char str2 = Thank you; ofsstr1; ofsstr2; ofs.cl

32、ose();程序運行將在當(dāng)前工作目錄中創(chuàng)建文件程序運行將在當(dāng)前工作目錄中創(chuàng)建文件data.txtdata.txt,該文件中的數(shù)據(jù)為:,該文件中的數(shù)據(jù)為:How are youHow are youThank youThank you-26-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介v 創(chuàng) 建 文 件 流 類 的 對 象 時 , 用 邏 輯 或 操 作 加 上 操 作 模 式創(chuàng) 建 文 件 流 類 的 對 象 時 , 用 邏 輯 或 操 作 加 上 操 作 模 式ios:binary,即表示采用二進制格式進行文件流的讀,即表示采用二進制格式進行文件流的讀/ /寫。二寫。二進制文件支持隨機訪問,使用

33、進制文件支持隨機訪問,使用read()和和write()成員函數(shù)讀成員函數(shù)讀/ /寫文件。寫文件。 例如:下面程序?qū)⑷齻€對象數(shù)據(jù)保存在文件中,然后定位文件指例如:下面程序?qū)⑷齻€對象數(shù)據(jù)保存在文件中,然后定位文件指針到第針到第2 2條記錄,讀取第條記錄,讀取第2 2個對象數(shù)據(jù)并輸出。個對象數(shù)據(jù)并輸出。 #include using namespace std; class Test int x; public: int get() return x; void set(int a=0) x = a; ; -27-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介int main() fstream fil

34、e(test.dat, ios:in|ios:out|ios:binary); if(!file) cerrcant open file!endl; return 1; Test t3, tt; for(int i=0; i3; i+) ti.set(i+1);file.write(char*)&ti,sizeof(class Test); file.seekp(1*sizeof(class Test), ios:beg); file.read(char*)&tt, sizeof(class Test); file.close(); coutx=tt.get()endl; re

35、turn 0;程序輸出:程序輸出:x=2x=2-28-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介2.1.7 2.1.7 類與對象類與對象 類是對客觀世界中具有相同屬性和行為的對象的抽象描述。類是對客觀世界中具有相同屬性和行為的對象的抽象描述。類是面向類是面向?qū)ο蟪绦蛟O(shè)計的核心,它是一種新的數(shù)據(jù)類型。對象程序設(shè)計的核心,它是一種新的數(shù)據(jù)類型。在在C+C+語言中,將類的屬性稱為成員變量,將類的行為稱為成員函數(shù)。語言中,將類的屬性稱為成員變量,將類的行為稱為成員函數(shù)。通常把類的成員變量和成員函數(shù)簡稱為類的成員。通常把類的成員變量和成員函數(shù)簡稱為類的成員。類的定義類的定義v 類的定義形式為:類的定義形式

36、為: class private: protected: public: ;-29-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介v 訪問權(quán)限聲明訪問權(quán)限聲明private聲明的成員對外部程序不可見,稱為私有成員。聲明的成員對外部程序不可見,稱為私有成員。protected聲明的成員對外部程序不可見,而對派生類是聲明的成員對外部程序不可見,而對派生類是可見的,稱為保護成員。可見的,稱為保護成員。public聲明的成員對外部程序是可見的,稱為公有成員。聲明的成員對外部程序是可見的,稱為公有成員。成員變量成員變量v 設(shè)計類時,在一般情況下,應(yīng)該將成員變量設(shè)計為私有訪問權(quán)設(shè)計類時,在一般情況下,應(yīng)該將成員

37、變量設(shè)計為私有訪問權(quán)限,將外部程序需要訪問的成員函數(shù)設(shè)計為公有訪問權(quán)限。類限,將外部程序需要訪問的成員函數(shù)設(shè)計為公有訪問權(quán)限。類成員的默認(rèn)訪問權(quán)限為成員的默認(rèn)訪問權(quán)限為private。v 成員變量的設(shè)計限制:成員變量的設(shè)計限制:成員變量不能在定義時初始化;成員變量不能在定義時初始化;成員變量不能遞歸定義,即不能用自身的類類型定義成員變成員變量不能遞歸定義,即不能用自身的類類型定義成員變量。但可定義當(dāng)前類的對象指針。量。但可定義當(dāng)前類的對象指針。例如:例如:-30-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介 class Test int x; Test t; /錯誤錯誤 Test *tp; /正確

38、正確 public: void print(); ;成員函數(shù)成員函數(shù) 當(dāng)在類定義中只對成員函數(shù)進行聲明,而在類外定義時,必須在函當(dāng)在類定義中只對成員函數(shù)進行聲明,而在類外定義時,必須在函數(shù)名前添加數(shù)名前添加“類名類名:” :” 。 例如:例如: void Test:print() coutx=xendl; v構(gòu)造函數(shù)構(gòu)造函數(shù)構(gòu)造函數(shù)是一種特殊的成員函數(shù)。當(dāng)創(chuàng)建類的實例時,系統(tǒng)構(gòu)造函數(shù)是一種特殊的成員函數(shù)。當(dāng)創(chuàng)建類的實例時,系統(tǒng)會自動調(diào)用構(gòu)造函數(shù)完成對象的初始化操作。會自動調(diào)用構(gòu)造函數(shù)完成對象的初始化操作。-31-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介構(gòu)造函數(shù)的設(shè)計方法如下:構(gòu)造函數(shù)的設(shè)計方法

39、如下:構(gòu)造函數(shù)名必須和類名完全相同。構(gòu)造函數(shù)名必須和類名完全相同。構(gòu)造函數(shù)的參數(shù)通常用來設(shè)置對象的初始值。構(gòu)造函數(shù)的參數(shù)通常用來設(shè)置對象的初始值。構(gòu)造函數(shù)不需要返回值類型,也不能使用構(gòu)造函數(shù)不需要返回值類型,也不能使用voidvoid類型。類型。構(gòu)造函數(shù)的訪問權(quán)限一定是公有的(構(gòu)造函數(shù)的訪問權(quán)限一定是公有的(publicpublic)。)。在構(gòu)造函數(shù)中,對于在構(gòu)造函數(shù)中,對于constconst類型成員變量、引用類型成員類型成員變量、引用類型成員變量以及對象成員變量,變量以及對象成員變量,C+C+語法不允許使用賦值語句直語法不允許使用賦值語句直接賦值,此時必須使用初始化表對成員變量進行初始化賦

40、接賦值,此時必須使用初始化表對成員變量進行初始化賦值。值。初始化表位于構(gòu)造函數(shù)頭部后面,格式為:初始化表位于構(gòu)造函數(shù)頭部后面,格式為: : : 成員變量成員變量( (初始值初始值) ),成員變量,成員變量( (初始值初始值) )如果類中沒有定義構(gòu)造函數(shù),系統(tǒng)會提供一個默認(rèn)的無參構(gòu)如果類中沒有定義構(gòu)造函數(shù),系統(tǒng)會提供一個默認(rèn)的無參構(gòu)造函數(shù)。構(gòu)造函數(shù)可以重載。例如:造函數(shù)。構(gòu)造函數(shù)可以重載。例如: class Test int x; float y; public: Test(int i) : x(i) Test(int i, float j) : x(i), y(j) ;-32-第第2 2章章

41、開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介v 析構(gòu)函數(shù)析構(gòu)函數(shù)當(dāng)程序中創(chuàng)建的對象脫離其作用域,或用當(dāng)程序中創(chuàng)建的對象脫離其作用域,或用deletedelete運算符釋放動運算符釋放動態(tài)對象占用的內(nèi)存空間時,系統(tǒng)會自動調(diào)用析構(gòu)函數(shù),完成一態(tài)對象占用的內(nèi)存空間時,系統(tǒng)會自動調(diào)用析構(gòu)函數(shù),完成一些掃尾工作。些掃尾工作。對象的析構(gòu)順序與構(gòu)造順序相反。對象的析構(gòu)順序與構(gòu)造順序相反。例如:例如: #include #include using namespace std; class Test int num; char *name; public: Test(int i=0, char *n=abc):num(i) na

42、me = new char20; strcpy(name, n); -33-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介 void show() coutnum: numendl; coutname: nameendl; Test() coutbye : numendl; delete name; ;-34-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介對象對象v 類的實例稱作對象。類的實例稱作對象。v 類的定義描述了屬于該類的對象的屬性和行為,而對象則是符合類的定義描述了屬于該類的對象的屬性和行為,而對象則是符合這種定義的一個具體實例。在外部程序中,可以直接訪問對象的這種定義的一個具體實例。在外部程序

43、中,可以直接訪問對象的公有成員函數(shù)。公有成員函數(shù)。v 創(chuàng)建對象有兩種方式:創(chuàng)建對象有兩種方式:創(chuàng)建自動對象創(chuàng)建自動對象 類名類名 對象名對象名( (參數(shù)參數(shù)) ); 例如:類例如:類TestTest的定義如上,若有下面程序:的定義如上,若有下面程序: void main () Test t1, t2(1, Tom),t3(2); t1.show(); t2.show(); t3.show(); 程序運行結(jié)果為:程序運行結(jié)果為: num: 0num: 0 name: name: abcabc num: 1num: 1 name: Tomname: Tom num: 2num: 2 name: n

44、ame: abcabc bye: 2bye: 2 bye: 1bye: 1 bye: 0bye: 0-35-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介創(chuàng)建動態(tài)對象創(chuàng)建動態(tài)對象 類名類名 * *對象指針名對象指針名= new = new 類名類名( (參數(shù)參數(shù)) );newnew運算符用來向系統(tǒng)動態(tài)申請一塊內(nèi)存空間。運算符用來向系統(tǒng)動態(tài)申請一塊內(nèi)存空間。newnew運算符運算符 的語法格式為:的語法格式為: new new 類型名類型名( (初始值初始值) ) 或者或者 new new 類型名類型名 數(shù)組個數(shù)數(shù)組個數(shù) 當(dāng)動態(tài)空間申請失敗,當(dāng)動態(tài)空間申請失敗,newnew運算符返回空指針運算符返回空

45、指針NULLNULL;當(dāng)動態(tài)空;當(dāng)動態(tài)空間申請成功,間申請成功,newnew運算符返回指向該內(nèi)存單元的起始地址。運算符返回指向該內(nèi)存單元的起始地址。 例如:例如: / /動態(tài)申請一個內(nèi)存空間,并初始化為動態(tài)申請一個內(nèi)存空間,并初始化為1010 int *p1 = new int(10); / /動態(tài)申請一組內(nèi)存空間,包括動態(tài)申請一組內(nèi)存空間,包括1010元素元素 int *p2 = new int10;對于使用對于使用newnew申請的動態(tài)空間,必須使用申請的動態(tài)空間,必須使用deletedelete運算符進行釋運算符進行釋放。放。DeleteDelete運算符的語法格式為:運算符的語法格式為

46、: delete delete 指針;指針; 或者或者 delete delete 指針;指針; 例如:例如: delete p1; delete p2;-36-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介2.2 MFC2.2 MFC編程編程2.2.1 MFC2.2.1 MFC應(yīng)用程序框架應(yīng)用程序框架應(yīng)用程序框架通常是指一個完整的程序模型,具備標(biāo)準(zhǔn)應(yīng)用軟件所需的應(yīng)用程序框架通常是指一個完整的程序模型,具備標(biāo)準(zhǔn)應(yīng)用軟件所需的一切基本功能。一切基本功能。在在Visual C+Visual C+集成開發(fā)環(huán)境中,使用集成開發(fā)環(huán)境中,使用MFC AppWizardMFC AppWizard(應(yīng)用程序向?qū)В┕?/p>

47、(應(yīng)用程序向?qū)В┕ぞ呖梢陨蓛深惥呖梢陨蓛深怣FCMFC應(yīng)用程序框架:應(yīng)用程序框架:v 基于文檔基于文檔/ /視圖結(jié)構(gòu)的應(yīng)用程序框架視圖結(jié)構(gòu)的應(yīng)用程序框架v 基于對話框的應(yīng)用程序框架基于對話框的應(yīng)用程序框架基于文檔基于文檔/ /視圖結(jié)構(gòu)的應(yīng)用程序框架視圖結(jié)構(gòu)的應(yīng)用程序框架v 文檔用于保存數(shù)據(jù)并對數(shù)據(jù)進行處理,視圖是一個從文檔用于保存數(shù)據(jù)并對數(shù)據(jù)進行處理,視圖是一個從CViewCView類派生類派生出來的窗口,也是一個可視化的矩形區(qū)域,文檔的內(nèi)容通過視圖窗出來的窗口,也是一個可視化的矩形區(qū)域,文檔的內(nèi)容通過視圖窗口顯示給用戶,這種文檔和視圖的結(jié)合,稱為口顯示給用戶,這種文檔和視圖的結(jié)合,稱為“

48、文檔文檔/ /視圖結(jié)構(gòu)視圖結(jié)構(gòu)”。-37-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介v 框架類框架類在文檔在文檔/ /視圖結(jié)構(gòu)中,視圖顯示在框架窗口中。視圖結(jié)構(gòu)中,視圖顯示在框架窗口中。框架類負(fù)責(zé)管理程序的主窗口,它為視圖提供可視的窗口邊框架類負(fù)責(zé)管理程序的主窗口,它為視圖提供可視的窗口邊框,包括標(biāo)題欄、菜單欄、工具欄、狀態(tài)欄和一些標(biāo)準(zhǔn)的窗框,包括標(biāo)題欄、菜單欄、工具欄、狀態(tài)欄和一些標(biāo)準(zhǔn)的窗口組件。口組件。框架類還可響應(yīng)標(biāo)準(zhǔn)的窗口消息,如窗口的最大化、最小化框架類還可響應(yīng)標(biāo)準(zhǔn)的窗口消息,如窗口的最大化、最小化等。等。當(dāng)框架窗口關(guān)閉時,其中的視圖類對象也被自動刪除。當(dāng)框架窗口關(guān)閉時,其中的視圖類對

49、象也被自動刪除。在在SDISDI應(yīng)用程序中,應(yīng)用程序中,AppWizardAppWizard會自動添加一個繼承自會自動添加一個繼承自CFrameWndCFrameWnd類的類的CMainFrameCMainFrame類作為主框架類。類作為主框架類。在在MDIMDI應(yīng)用程序中,主框架類的基類為應(yīng)用程序中,主框架類的基類為CMDIFrameWndCMDIFrameWnd,還會包,還會包含子框架窗口類含子框架窗口類CchildFrameCchildFrame,其基類為,其基類為CMDIChildWndCMDIChildWnd類。類。v 應(yīng)用程序類應(yīng)用程序類應(yīng)用程序類是應(yīng)用程序運行的基礎(chǔ),用來管理整個

50、應(yīng)用程序,應(yīng)用程序類是應(yīng)用程序運行的基礎(chǔ),用來管理整個應(yīng)用程序,封裝了封裝了WindowsWindows應(yīng)用程序要做的初始化、運行和終止三大主要應(yīng)用程序要做的初始化、運行和終止三大主要任務(wù)任務(wù)。在該類的在該類的InitInstanceInitInstance()()函數(shù)中會創(chuàng)建一個文檔模板,它負(fù)函數(shù)中會創(chuàng)建一個文檔模板,它負(fù)責(zé)在運行時創(chuàng)建文檔、視圖和框架窗口。責(zé)在運行時創(chuàng)建文檔、視圖和框架窗口。-38-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介v 文檔類文檔類文檔類封裝了應(yīng)用程序的數(shù)據(jù)管理功能,負(fù)責(zé)存放程序數(shù)據(jù)、讀文檔類封裝了應(yīng)用程序的數(shù)據(jù)管理功能,負(fù)責(zé)存放程序數(shù)據(jù)、讀出數(shù)據(jù)并進行出數(shù)據(jù)并進行I

51、/OI/O操作。操作。當(dāng)用戶啟動應(yīng)用程序,或進行當(dāng)用戶啟動應(yīng)用程序,或進行File|NewFile|New操作時,都需要對文檔類操作時,都需要對文檔類的數(shù)據(jù)成員進行初始化。通常數(shù)據(jù)成員的初始化工作都是在構(gòu)造的數(shù)據(jù)成員進行初始化。通常數(shù)據(jù)成員的初始化工作都是在構(gòu)造函數(shù)中完成,但文檔類的數(shù)據(jù)成員初始化是在函數(shù)中完成,但文檔類的數(shù)據(jù)成員初始化是在OnNewDocumentOnNewDocument()()成員函數(shù)中完成的。成員函數(shù)中完成的。在關(guān)閉應(yīng)用程序并刪除文檔對象時,或進行在關(guān)閉應(yīng)用程序并刪除文檔對象時,或進行File|OpenFile|Open操作時,操作時,需要清理文檔中的數(shù)據(jù),該工作由需要

52、清理文檔中的數(shù)據(jù),該工作由DeleteContentsDeleteContents()()成員函數(shù)完成員函數(shù)完成。成。文檔類的析構(gòu)函數(shù)只用于清除那些在對象生存期都將存在的數(shù)據(jù)文檔類的析構(gòu)函數(shù)只用于清除那些在對象生存期都將存在的數(shù)據(jù)項(如使用項(如使用newnew運算符生成的數(shù)據(jù))。運算符生成的數(shù)據(jù))。v 視圖類視圖類視圖類負(fù)責(zé)管理視圖窗口,每個視圖必須依附于一個框架。視圖類負(fù)責(zé)管理視圖窗口,每個視圖必須依附于一個框架。視圖類一方面接受用戶對文檔中數(shù)據(jù)的編輯和修改,將修改的結(jié)視圖類一方面接受用戶對文檔中數(shù)據(jù)的編輯和修改,將修改的結(jié)果反饋給文檔類,由文檔類將修改后的內(nèi)容保存到磁盤文件中。果反饋給文

53、檔類,由文檔類將修改后的內(nèi)容保存到磁盤文件中。另一方面視圖類將文檔中的數(shù)據(jù)取出后顯示給用戶。另一方面視圖類將文檔中的數(shù)據(jù)取出后顯示給用戶。在視圖類中,通常通過在視圖類中,通常通過CView:Draw(CDCCView:Draw(CDC* * pDCpDC) )方法實現(xiàn)屏幕顯方法實現(xiàn)屏幕顯示、打印和打印預(yù)覽功能,對于不同的輸出功能會傳遞不同的設(shè)示、打印和打印預(yù)覽功能,對于不同的輸出功能會傳遞不同的設(shè)備上下文指針給備上下文指針給pDCpDC,從而進行,從而進行GDIGDI調(diào)用。調(diào)用。-39-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介基于對話框的應(yīng)用程序框架基于對話框的應(yīng)用程序框架v 基于對話框的應(yīng)用

54、程序是由一個或多個對話框組成,對話框是一基于對話框的應(yīng)用程序是由一個或多個對話框組成,對話框是一種特殊類型的窗口,是作為其它一些行為標(biāo)準(zhǔn)化了的窗口(也即種特殊類型的窗口,是作為其它一些行為標(biāo)準(zhǔn)化了的窗口(也即控件)的容器。控件)的容器。v 應(yīng)用程序類應(yīng)用程序類應(yīng)用程序類以類應(yīng)用程序類以類CWinAppCWinApp為基類,負(fù)責(zé)應(yīng)用程序的初始化、運為基類,負(fù)責(zé)應(yīng)用程序的初始化、運行和終止。行和終止。在成員函數(shù)在成員函數(shù)InitInstanceInitInstance () ()中會創(chuàng)建一個對話框類的對象,中會創(chuàng)建一個對話框類的對象,然后調(diào)用該對象的然后調(diào)用該對象的DoModalDoModal (

55、) ()函數(shù)實現(xiàn)主對話框的顯示。函數(shù)實現(xiàn)主對話框的顯示。v 對話框類對話框類對 話 框 類 以 類對 話 框 類 以 類 C D i a l o gC D i a l o g 為 基 類 , 該 類 與 對 話 框 資 源為 基 類 , 該 類 與 對 話 框 資 源IDD_EXAMDLG_DIALOGIDD_EXAMDLG_DIALOG相關(guān)聯(lián),在程序運行時看到的對話框即相關(guān)聯(lián),在程序運行時看到的對話框即為它的一個實例對象。為它的一個實例對象。在對話框類中可以為對話框中的控件定義相應(yīng)的成員變量、在對話框類中可以為對話框中的控件定義相應(yīng)的成員變量、成員函數(shù)及消息響應(yīng)函數(shù)。成員函數(shù)及消息響應(yīng)函數(shù)。

56、-40-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介2.2.2 MFC2.2.2 MFC對話框編程對話框編程對話框的創(chuàng)建和使用對話框的創(chuàng)建和使用v 創(chuàng)建和使用對話框一般包括下面幾個步驟:創(chuàng)建和使用對話框一般包括下面幾個步驟:創(chuàng)建對話框資源創(chuàng)建對話框資源在在WorkspaceWorkspace窗口選擇窗口選擇ResourceViewerResourceViewer選項卡,用鼠標(biāo)右選項卡,用鼠標(biāo)右鍵單擊鍵單擊“Dialog”“Dialog”資源項,在彈出的快捷菜單中選擇資源項,在彈出的快捷菜單中選擇“Insert Dialog”“Insert Dialog”菜單項,此時系統(tǒng)在右側(cè)工作區(qū)打開菜單項,此時

57、系統(tǒng)在右側(cè)工作區(qū)打開對話框編輯器,默認(rèn)的對話框資源對話框編輯器,默認(rèn)的對話框資源IDID為為“IDD_DIALOG1”“IDD_DIALOG1”。添加添加WindowsWindows標(biāo)準(zhǔn)控件,和標(biāo)準(zhǔn)控件,和ActiveXActiveX控件。控件。設(shè)置對話框及控件屬性設(shè)置對話框及控件屬性鼠標(biāo)右鍵單擊對話框或控件時,在彈出的快捷菜單中選擇鼠標(biāo)右鍵單擊對話框或控件時,在彈出的快捷菜單中選擇“PropertiesProperties”菜單項開打開相應(yīng)的屬性對話框,從而可菜單項開打開相應(yīng)的屬性對話框,從而可以設(shè)置資源以設(shè)置資源IDID和顯示風(fēng)格等屬性。和顯示風(fēng)格等屬性。當(dāng)向?qū)υ捒蛱砑佣鄠€控件后,可以使用

58、當(dāng)向?qū)υ捒蛱砑佣鄠€控件后,可以使用DialogDialog工具欄對控工具欄對控件進行排版,如設(shè)置控件大小、間距,設(shè)置對齊方式、居件進行排版,如設(shè)置控件大小、間距,設(shè)置對齊方式、居中方式,并可以單擊中方式,并可以單擊 預(yù)覽對話框資源的外觀效果。預(yù)覽對話框資源的外觀效果。-41-第第2 2章章 開發(fā)環(huán)境簡介開發(fā)環(huán)境簡介創(chuàng)建對話框派生類創(chuàng)建對話框派生類在對話框資源上雙擊鼠標(biāo)左鍵,會彈出在對話框資源上雙擊鼠標(biāo)左鍵,會彈出MFC MFC ClassWizardClassWizard對話框,并緊接著彈出對話框,并緊接著彈出Adding a ClassAdding a Class對話框,輸入類對話框,輸入類

59、名名。為控件添加成員變量為控件添加成員變量選擇選擇View|ClassWizardView|ClassWizard菜單項,打開菜單項,打開MFC MFC ClassWizardClassWizard對話框,首先選擇對話框,首先選擇Member VariablesMember Variables選項卡,然后在選項卡,然后在ProjectProject組合框選擇當(dāng)前工程,在組合框選擇當(dāng)前工程,在Class nameClass name組合框選擇組合框選擇類。類。在在Controls IDsControls IDs列表框中選擇控件后,單擊對話框右側(cè)的列表框中選擇控件后,單擊對話框右側(cè)的“Add Va

60、riable”“Add Variable”按鈕,在彈出的按鈕,在彈出的Add Member Add Member VariableVariable對話框中輸出成員變量名。對話框中輸出成員變量名。為控件添加消息處理函數(shù)為控件添加消息處理函數(shù)選擇選擇View |View |ClassWizardClassWizard菜單項,打開菜單項,打開MFC MFC ClassWizardClassWizard對話框,首先選擇對話框,首先選擇Message MapsMessage Maps選項卡,然后在選項卡,然后在ProjectProject組合框中選擇當(dāng)前工程,在組合框中選擇當(dāng)前工程,在Class nameClass name組合框中選擇類。組合框中選擇類。在在Controls IDsCon

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論