c++課件第7章_第1頁(yè)
c++課件第7章_第2頁(yè)
c++課件第7章_第3頁(yè)
c++課件第7章_第4頁(yè)
c++課件第7章_第5頁(yè)
已閱讀5頁(yè),還剩77頁(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、返回返回返回返回1第7章 對(duì)話框和常用控件返回返回返回返回2 本章要點(diǎn)本章要點(diǎn) 在本章我們主要通過(guò)具體案例詳細(xì)給大家介紹如在本章我們主要通過(guò)具體案例詳細(xì)給大家介紹如何用何用Visual C+2008進(jìn)行對(duì)話框設(shè)計(jì),并給大家介紹進(jìn)行對(duì)話框設(shè)計(jì),并給大家介紹Visual C+2008中的主要常用控件。通過(guò)本章的學(xué)習(xí)中的主要常用控件。通過(guò)本章的學(xué)習(xí)應(yīng)該能夠了解動(dòng)畫控件的使用、對(duì)話框資源的建立方應(yīng)該能夠了解動(dòng)畫控件的使用、對(duì)話框資源的建立方法和常見(jiàn)屬性的含義,熟悉利用控件屬性對(duì)話框設(shè)置法和常見(jiàn)屬性的含義,熟悉利用控件屬性對(duì)話框設(shè)置控件屬性的方法及常見(jiàn)控件屬性的含義、掌握對(duì)話框控件屬性的方法及常見(jiàn)控件屬

2、性的含義、掌握對(duì)話框消息消息WM_INITDIALOG的響應(yīng),會(huì)利用類向?qū)砑涌氐捻憫?yīng),會(huì)利用類向?qū)砑涌丶兞亢拖⒂成浜瘮?shù),熟練掌握控件類型的無(wú)關(guān)訪件變量和消息映射函數(shù),熟練掌握控件類型的無(wú)關(guān)訪問(wèn)。問(wèn)。 返回返回返回返回3對(duì)話框分為模態(tài)對(duì)話框和非模態(tài)對(duì)話框。對(duì)話框分為模態(tài)對(duì)話框和非模態(tài)對(duì)話框。(1) 模態(tài)對(duì)話框:模態(tài)對(duì)話框彈出后,獨(dú)占了模態(tài)對(duì)話框:模態(tài)對(duì)話框彈出后,獨(dú)占了系統(tǒng)資源,用戶只有在關(guān)閉該對(duì)話框后才可以系統(tǒng)資源,用戶只有在關(guān)閉該對(duì)話框后才可以繼續(xù)執(zhí)行,不能夠在關(guān)閉對(duì)話框之前執(zhí)行應(yīng)用繼續(xù)執(zhí)行,不能夠在關(guān)閉對(duì)話框之前執(zhí)行應(yīng)用程序其他部分的代碼。模態(tài)對(duì)話框一般要求用程序其他部分的代碼。模

3、態(tài)對(duì)話框一般要求用戶做出某種選擇。戶做出某種選擇。(2) 非模態(tài)對(duì)話框:非模態(tài)對(duì)話框彈出后,程非模態(tài)對(duì)話框:非模態(tài)對(duì)話框彈出后,程序可以在不關(guān)閉該對(duì)話框的情況下繼續(xù)執(zhí)行,序可以在不關(guān)閉該對(duì)話框的情況下繼續(xù)執(zhí)行,在轉(zhuǎn)入到應(yīng)用程序其他部分的代碼時(shí)可以不需在轉(zhuǎn)入到應(yīng)用程序其他部分的代碼時(shí)可以不需要用戶做出響應(yīng)。非模態(tài)對(duì)話框一般用來(lái)顯示要用戶做出響應(yīng)。非模態(tài)對(duì)話框一般用來(lái)顯示信息,或者實(shí)時(shí)地進(jìn)行一些設(shè)置。信息,或者實(shí)時(shí)地進(jìn)行一些設(shè)置。7.1 對(duì)話框返回返回返回返回47.1.1 創(chuàng)建對(duì)話框1新建解決方案ex07_1(1)在集成編輯環(huán)境中依次選擇“文件”“新建”“項(xiàng)目”菜單命令,或直接按快捷鍵“Ctrl+

4、Shift+N”,打開“新建項(xiàng)目”對(duì)話框。(2) 在“新建項(xiàng)目”對(duì)話框中,在項(xiàng)目類型上選擇“MFC”,模板上選擇“MFC應(yīng)用程序”,在“名稱”文本框中輸入“ex07_1”,單擊“確定”按鈕,彈出“MFC應(yīng)用程序向?qū)А睂?duì)話框。返回返回返回返回5(3) 在在“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框?qū)υ捒颉皯?yīng)用程序類型應(yīng)用程序類型”選項(xiàng)中,選中選項(xiàng)中,選中“單文檔單文檔”單選按鈕,單選按鈕,“生成類生成類”選項(xiàng),選項(xiàng),把把“Cex07_1View”的基類改為的基類改為“CEditView”其他使用默其他使用默認(rèn)值,然后單擊認(rèn)值,然后單擊“完成完成”按鈕,就可以完成工程的創(chuàng)建。按鈕,就可以完成工程的創(chuàng)

5、建。如圖如圖7-1所示所示圖7-1 MFC應(yīng)用程序向?qū)Х祷胤祷胤祷胤祷?2添加對(duì)話框資源添加對(duì)話框資源圖7-2 添加資源對(duì)話框返回返回返回返回7圖7-3 對(duì)話框編輯器返回返回返回返回8 3修改修改“IDD_DIALOG1“對(duì)話框?qū)傩詫?duì)話框?qū)傩?(1) 修改對(duì)話框修改對(duì)話框ID,在,在“ID”輸入框中輸入輸入框中輸入“IDD_PASSWORD_DIALOG”。 (2) 修改對(duì)話框標(biāo)題,在修改對(duì)話框標(biāo)題,在“Caption”輸入框中輸入輸入框中輸入“口令口令”。 (3) 在在“Font”列表框中選擇字體為列表框中選擇字體為“宋體宋體”,在,在“Size”列表框中列表框中設(shè)置字號(hào)為設(shè)置字號(hào)為10,

6、(4) 修改完畢后,使用修改完畢后,使用“Ctrl + T”彈出預(yù)覽對(duì)話框,如圖彈出預(yù)覽對(duì)話框,如圖7-4所示。所示。圖7-4 預(yù)覽口令對(duì)話框返回返回返回返回9 4在對(duì)話框中添加控件在對(duì)話框中添加控件 默認(rèn)的對(duì)話框有默認(rèn)的對(duì)話框有“確定確定”和和“取消取消”兩個(gè)按鈕;依據(jù)實(shí)例要求,兩個(gè)按鈕;依據(jù)實(shí)例要求,“確認(rèn)確認(rèn)”和和“取消取消”按鈕已經(jīng)默認(rèn)添加好了,只需要添加按鈕已經(jīng)默認(rèn)添加好了,只需要添加“口令口令”輸入框和提示標(biāo)簽。具體步驟如下:輸入框和提示標(biāo)簽。具體步驟如下: (1) 提示標(biāo)簽的添加;在對(duì)話框中添加一個(gè)靜態(tài)文本。在如圖提示標(biāo)簽的添加;在對(duì)話框中添加一個(gè)靜態(tài)文本。在如圖7-5所示的客戶

7、區(qū)右側(cè)浮動(dòng)的工具箱中的所示的客戶區(qū)右側(cè)浮動(dòng)的工具箱中的“Static Text”控件按鈕上單控件按鈕上單擊,然后在對(duì)話框資源中按下鼠標(biāo)左鍵拖動(dòng),出現(xiàn)一個(gè)矩形框,擊,然后在對(duì)話框資源中按下鼠標(biāo)左鍵拖動(dòng),出現(xiàn)一個(gè)矩形框,松開鼠標(biāo)左鍵,則在對(duì)話框資源中出現(xiàn)了一個(gè)松開鼠標(biāo)左鍵,則在對(duì)話框資源中出現(xiàn)了一個(gè)“Static Text”控件??丶?。圖7-5 添加控件及屬性設(shè)置返回返回返回返回10(3) 預(yù)覽對(duì)話框,控件添加完成后,通過(guò)預(yù)覽對(duì)話框,控件添加完成后,通過(guò)“Ctrl + T ”預(yù)覽對(duì)話框效果如圖預(yù)覽對(duì)話框效果如圖7-6所示:所示: 圖7-6 效果預(yù)覽返回返回返回返回11 5設(shè)置對(duì)話框中各種控件的響應(yīng)

8、順序設(shè)置對(duì)話框中各種控件的響應(yīng)順序 即運(yùn)行時(shí)按下即運(yùn)行時(shí)按下Tab鍵,輸入焦點(diǎn)從一個(gè)控件換到另一個(gè)控件的順鍵,輸入焦點(diǎn)從一個(gè)控件換到另一個(gè)控件的順序。序。 在對(duì)話框編輯界面中,可以通過(guò)選擇主菜單在對(duì)話框編輯界面中,可以通過(guò)選擇主菜單“格式格式”“Tab 鍵序鍵序”或者按快捷鍵或者按快捷鍵“Ctrl+D”,進(jìn)入,進(jìn)入Tab順序的設(shè)置界面,此時(shí)對(duì)話框順序的設(shè)置界面,此時(shí)對(duì)話框資源編輯器的如圖資源編輯器的如圖7-7所示。所示。返回返回返回返回12設(shè)置設(shè)置Tab順序是通過(guò)按所需的順序依次單擊各順序是通過(guò)按所需的順序依次單擊各個(gè)控件完成,在圖個(gè)控件完成,在圖7-7所示的界面后,依次單所示的界面后,依次單

9、擊擊“請(qǐng)輸入口令請(qǐng)輸入口令”輸入框,輸入框,“請(qǐng)輸入口令請(qǐng)輸入口令”靜靜態(tài)文本框,態(tài)文本框,“確定確定”按鈕和按鈕和“取消取消”按鈕,就按鈕,就可以設(shè)置成如圖可以設(shè)置成如圖7-8所示的對(duì)話框編輯狀態(tài)。所示的對(duì)話框編輯狀態(tài)。圖7-8 設(shè)置TAB鍵序返回返回返回返回136創(chuàng)建對(duì)話框類創(chuàng)建對(duì)話框類( 1 ) 選 中 添 加 的 對(duì) 話 框 資 源選 中 添 加 的 對(duì) 話 框 資 源“IDD_PASSWORD_DIALOG”,在主菜單欄中,在主菜單欄中依次選擇菜單依次選擇菜單“項(xiàng)目項(xiàng)目”“添加新類添加新類”,或者在,或者在開發(fā)環(huán)境的界面中直接雙擊對(duì)話框資源,打開開發(fā)環(huán)境的界面中直接雙擊對(duì)話框資源,打

10、開“MFC類向?qū)ь愊驅(qū)А睂?duì)話框,如圖對(duì)話框,如圖7-9所示。所示。返回返回返回返回14 6創(chuàng)建對(duì)話框類創(chuàng)建對(duì)話框類 創(chuàng)建與對(duì)話框資源相關(guān)聯(lián)的派生類的過(guò)程如下:創(chuàng)建與對(duì)話框資源相關(guān)聯(lián)的派生類的過(guò)程如下: (1) 選中添加的對(duì)話框資源選中添加的對(duì)話框資源“IDD_PASSWORD_DIALOG”,在主,在主菜單欄中依次選擇菜單菜單欄中依次選擇菜單“項(xiàng)目項(xiàng)目”“添加新類添加新類”,或者在開發(fā)環(huán)境,或者在開發(fā)環(huán)境的界面中直接雙擊對(duì)話框資源,打開的界面中直接雙擊對(duì)話框資源,打開“MFC類向?qū)ь愊驅(qū)А睂?duì)話框,如對(duì)話框,如圖圖7-9所示。所示。返回返回返回返回15(2) 在類名中輸入在類名中輸入Cpassw

11、ordDialog,基類中選,基類中選擇擇Cdialog,點(diǎn)擊,點(diǎn)擊“完成完成”按鈕,實(shí)現(xiàn)類的創(chuàng)按鈕,實(shí)現(xiàn)類的創(chuàng)建。建。MFC類向?qū)ё詣?dòng)使類類向?qū)ё詣?dòng)使類CPasswordDialog與與IDD_PASSWORD_DIALOG模板聯(lián)系起模板聯(lián)系起來(lái)。來(lái)。.h,.cpp文件指示在項(xiàng)目種添加的類的文文件指示在項(xiàng)目種添加的類的文件名。件名。返回返回返回返回167為對(duì)話框類添加控件成員變量(1) 在對(duì)話框資源編輯窗口,選中要為之添加變量的控件,點(diǎn)擊鼠標(biāo)右鍵,彈出菜單,選擇“添加變量”,彈出圖7-10的添加成員變量向?qū)?duì)話框。類別中選擇:value;在變量類型中選擇Cstring,(默認(rèn)的類型為Cedi

12、t,為控件類型變量,這里我們改為Cstring類型),變量名字為:m_passWord。最大字符數(shù)限定字符串的長(zhǎng)度,這里設(shè)置為50(也可不設(shè)置)。點(diǎn)擊“完成”按鈕,完成變量的添加。返回返回返回返回17 (2) 添加變量向?qū)ё詣?dòng)產(chǎn)生代碼如下:添加變量向?qū)ё詣?dòng)產(chǎn)生代碼如下: 在頭文件在頭文件PasswordDialog.h中添加了如下代碼:中添加了如下代碼: public:CString m_passWord; 在實(shí)現(xiàn)文件在實(shí)現(xiàn)文件PasswordDialog.cpp中的中的DoDataExchange函數(shù)種添加函數(shù)種添加了黑體部分的代碼;了黑體部分的代碼; void CPasswordDialo

13、g:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT_PASSWORD, m_passWord);DDV_MaxChars(pDX, m_passWord, 50); 返回返回返回返回188添加實(shí)現(xiàn)代碼到解決方案添加實(shí)現(xiàn)代碼到解決方案實(shí)例實(shí)例ex07_1中要求口令對(duì)話框在程序運(yùn)行一開中要求口令對(duì)話框在程序運(yùn)行一開始,程序框架還沒(méi)有出現(xiàn)時(shí)彈出,所以在應(yīng)用始,程序框架還沒(méi)有出現(xiàn)時(shí)彈出,所以在應(yīng)用程序類的程序類的InitInstance()函數(shù)中進(jìn)行口令的檢查函數(shù)中進(jìn)行口令的檢查

14、過(guò)程。下面就在程序中添加與口令對(duì)話框相應(yīng)過(guò)程。下面就在程序中添加與口令對(duì)話框相應(yīng)的代碼。的代碼。(1) 在類視圖中選中在類視圖中選中ex07_1App類,點(diǎn)擊鼠標(biāo)右類,點(diǎn)擊鼠標(biāo)右鍵為應(yīng)用程序類添加變量。如圖鍵為應(yīng)用程序類添加變量。如圖7-11所示:所示:返回返回返回返回19 (3) 添加如下代碼到添加如下代碼到InitInstance函數(shù)的頂部函數(shù)的頂部 if(m_pswdDialog.DoModal()=IDOK) /用戶按下確用戶按下確定按鈕定按鈕 if(m_pswdDialog.m_passWord!= 123456) /如果口令不對(duì),則顯示出錯(cuò)信息,結(jié)束程序如果口令不對(duì),則顯示出錯(cuò)信息

15、,結(jié)束程序 MessageBox(NULL,_T(口令錯(cuò)誤,確定后將退口令錯(cuò)誤,確定后將退出程序出程序),_T(錯(cuò)誤錯(cuò)誤),MB_OK|MB_ICONERROR);return FALSE;MessageBox(NULL,_T(口令正確,確定后將運(yùn)行口令正確,確定后將運(yùn)行程序程序),_T(正確正確),MB_OK|MB_ICONASTERISK);返回返回返回返回20(4) 生成并運(yùn)行應(yīng)用程序。這時(shí)首先彈出口令生成并運(yùn)行應(yīng)用程序。這時(shí)首先彈出口令對(duì)話框,程序中設(shè)置初始密碼為對(duì)話框,程序中設(shè)置初始密碼為“123456”,用戶輸入密碼后進(jìn)行校驗(yàn)。如密碼錯(cuò)誤則推出用戶輸入密碼后進(jìn)行校驗(yàn)。如密碼錯(cuò)誤則推

16、出應(yīng)用程序,正確則啟動(dòng)到單文檔應(yīng)用程序界面。應(yīng)用程序,正確則啟動(dòng)到單文檔應(yīng)用程序界面。圖 7-13 口令錯(cuò)誤提示圖7-14 口令正確提示返回返回返回返回217.1.2 通用對(duì)話框 (1) 文件對(duì)話框文件對(duì)話框 文件對(duì)話框類為打開保存文件提供了一個(gè)方便易用的接口,文件對(duì)話框類為打開保存文件提供了一個(gè)方便易用的接口,MFC的的CFileDialog類對(duì)其進(jìn)行了封裝。類對(duì)其進(jìn)行了封裝。 如圖如圖7-15和圖和圖7-16所示的就是使用所示的就是使用CFileDialog類創(chuàng)建的類創(chuàng)建的“打開打開”和和“另另存為存為”對(duì)話框。對(duì)話框。圖7-15 文件打開對(duì)話框圖7-16 文件另存為對(duì)話框返回返回返回返回

17、22(2) 顏色對(duì)話框顏色對(duì)話框“顏色顏色”對(duì)話框提供了對(duì)顏色的方便選擇,用對(duì)話框提供了對(duì)顏色的方便選擇,用戶可以直觀地在對(duì)話框中選擇所需的顏色,也戶可以直觀地在對(duì)話框中選擇所需的顏色,也可以創(chuàng)建自定義的顏色。圖可以創(chuàng)建自定義的顏色。圖7-17顯示了標(biāo)準(zhǔn)的顯示了標(biāo)準(zhǔn)的顏色對(duì)話框。顏色對(duì)話框。返回返回返回返回23(3) 查找和替換對(duì)話框查找和替換對(duì)話框查找和替換對(duì)話框可以在應(yīng)用程序的文本中進(jìn)查找和替換對(duì)話框可以在應(yīng)用程序的文本中進(jìn)行查找、替換操作,行查找、替換操作,MFC的的CfindReplaceDialog類對(duì)其進(jìn)行了封裝。類對(duì)其進(jìn)行了封裝。圖圖7-18所示就是使用所示就是使用CFindRe

18、placeDialog類創(chuàng)類創(chuàng)建的建的“查找查找”與與“替換替換”對(duì)話框。對(duì)話框。返回返回返回返回24(4) 字體對(duì)話框字體對(duì)話框字體對(duì)話框?yàn)閼?yīng)用程序中的字體設(shè)置提供了良字體對(duì)話框?yàn)閼?yīng)用程序中的字體設(shè)置提供了良好的界面,好的界面,MFC的的CFontDialog類對(duì)其進(jìn)行了類對(duì)其進(jìn)行了封裝。封裝。圖圖7-19所示就是使用所示就是使用CFontDialog類創(chuàng)建的類創(chuàng)建的“字體字體”對(duì)話框。對(duì)話框。返回返回返回返回25(5) 打印設(shè)置對(duì)話框打印設(shè)置對(duì)話框打印設(shè)置對(duì)話框提供了對(duì)打印機(jī)接口界面的支打印設(shè)置對(duì)話框提供了對(duì)打印機(jī)接口界面的支持,用戶可以通過(guò)它來(lái)選擇已安裝的打印機(jī)及持,用戶可以通過(guò)它來(lái)選擇

19、已安裝的打印機(jī)及相關(guān)設(shè)置。圖相關(guān)設(shè)置。圖7-20給出了標(biāo)準(zhǔn)打印設(shè)置對(duì)話框。給出了標(biāo)準(zhǔn)打印設(shè)置對(duì)話框。返回返回返回返回26 (6) 頁(yè)面設(shè)置對(duì)話框頁(yè)面設(shè)置對(duì)話框 頁(yè)面設(shè)置對(duì)話框提供了一個(gè)可以方便地設(shè)置頁(yè)面屬性的用戶界面,頁(yè)面設(shè)置對(duì)話框提供了一個(gè)可以方便地設(shè)置頁(yè)面屬性的用戶界面,可以通過(guò)它來(lái)設(shè)置紙張、頁(yè)邊距、打印方向等,也可以用它來(lái)調(diào)可以通過(guò)它來(lái)設(shè)置紙張、頁(yè)邊距、打印方向等,也可以用它來(lái)調(diào)用用“打印設(shè)置打印設(shè)置”對(duì)話框。圖對(duì)話框。圖7-21給出了標(biāo)準(zhǔn)頁(yè)面設(shè)置對(duì)話框。給出了標(biāo)準(zhǔn)頁(yè)面設(shè)置對(duì)話框。返回返回返回返回27 1新建解決方案新建解決方案ex07_2 (1)在集成編輯環(huán)境中依次選擇)在集成編輯環(huán)境

20、中依次選擇“文件文件”“新新建建”“項(xiàng)目項(xiàng)目”菜單命令,或直接按快捷鍵菜單命令,或直接按快捷鍵“Ctrl+Shift+N”,打開,打開“新建項(xiàng)目新建項(xiàng)目”對(duì)話框。對(duì)話框。 (2)在)在“新建項(xiàng)目新建項(xiàng)目”對(duì)話框中,在項(xiàng)目類型上選擇對(duì)話框中,在項(xiàng)目類型上選擇“MFC”,模板上選擇,模板上選擇“MFC應(yīng)用程序應(yīng)用程序”,在,在“名稱名稱”文本框中輸入文本框中輸入“ex07_2”,單擊,單擊“確定確定”按鈕,彈出按鈕,彈出“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框。對(duì)話框。 (3)在)在“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框?qū)υ捒颉皯?yīng)用程序類應(yīng)用程序類型型”選項(xiàng)中,選中選項(xiàng)中,選中“對(duì)話框?qū)υ捒颉眴?/p>

21、選按鈕,其他使用默單選按鈕,其他使用默認(rèn)值,然后單擊認(rèn)值,然后單擊“完成完成”按鈕,就可以完成工程的創(chuàng)按鈕,就可以完成工程的創(chuàng)建。建。 2在對(duì)話框編輯器中添加按鈕在對(duì)話框編輯器中添加按鈕 在對(duì)話框中添加在對(duì)話框中添加7個(gè)按鈕控件。個(gè)按鈕控件。 3修改按鈕屬性修改按鈕屬性 將鼠標(biāo)光標(biāo)移動(dòng)到對(duì)話框編輯器中需要編輯的按鈕上,將鼠標(biāo)光標(biāo)移動(dòng)到對(duì)話框編輯器中需要編輯的按鈕上,然后單擊鼠標(biāo)右鍵打開彈出式菜單,選擇然后單擊鼠標(biāo)右鍵打開彈出式菜單,選擇“屬性屬性”,打開打開“屬性屬性”對(duì)話框。對(duì)按鈕分別進(jìn)行設(shè)置。對(duì)話框。對(duì)按鈕分別進(jìn)行設(shè)置。 返回返回返回返回28圖圖7-22 通用對(duì)話框應(yīng)用程序主窗口通用對(duì)話框

22、應(yīng)用程序主窗口 返回返回返回返回29 4添加按鈕消息函數(shù)添加按鈕消息函數(shù) 在對(duì)話框編輯器窗口分別雙擊添加的在對(duì)話框編輯器窗口分別雙擊添加的7個(gè)按鈕,個(gè)按鈕,Visual C+ 2008 自動(dòng)添加該按鈕的消息處理函數(shù)到主對(duì)話框的頭文件和實(shí)現(xiàn)文件自動(dòng)添加該按鈕的消息處理函數(shù)到主對(duì)話框的頭文件和實(shí)現(xiàn)文件中。中。 5在主對(duì)話框程序中添加按鈕消息處理代碼在主對(duì)話框程序中添加按鈕消息處理代碼 6生成運(yùn)行效果圖生成運(yùn)行效果圖 單擊任意一個(gè)按鈕,都將彈出相應(yīng)的對(duì)話框。其運(yùn)行效果圖如圖單擊任意一個(gè)按鈕,都將彈出相應(yīng)的對(duì)話框。其運(yùn)行效果圖如圖7-23所示:所示:返回返回返回返回30單擊單擊“確定確定”按鈕,退出程

23、序。按鈕,退出程序。消息對(duì)話框消息對(duì)話框MessageBox是是Windows系統(tǒng)中自帶系統(tǒng)中自帶的最簡(jiǎn)單的對(duì)話框,用于提示一些簡(jiǎn)單的信息,的最簡(jiǎn)單的對(duì)話框,用于提示一些簡(jiǎn)單的信息,如圖如圖7-24所示。所示。返回返回返回返回317.2 控件表表7-4 常用于控件的常用于控件的CWnd成員函數(shù)成員函數(shù)函數(shù)名用途ShowWindow調(diào)用ShowWindow(SW_SHOW)顯示窗口,調(diào)用ShowWindow(SW_HIDE)則隱藏窗口。EnableWindow調(diào)用EnableWindow(TRUE)允許窗口,調(diào)用EnableWindow(FALSE)則禁止窗口。一個(gè)禁止的窗口呈灰色顯示且不能接受

24、用戶輸入。DestroyWindow刪除窗口。MoveWindow改變窗口的位置和尺寸。SetFocus使窗口具有輸入焦點(diǎn)。返回返回返回返回327.2.1 標(biāo)準(zhǔn)控件 1新建解決方案新建解決方案ex07_3 (1) 在集成編輯環(huán)境中依次選擇在集成編輯環(huán)境中依次選擇“文件文件”“新新建建”“項(xiàng)目項(xiàng)目”菜單命令,或直接按快捷鍵菜單命令,或直接按快捷鍵“Ctrl+Shift+N”,打開,打開“新建項(xiàng)目新建項(xiàng)目”對(duì)話框。對(duì)話框。 (2) 在在“新建項(xiàng)目新建項(xiàng)目”對(duì)話框中,在項(xiàng)目類型上選擇對(duì)話框中,在項(xiàng)目類型上選擇“MFC”,模板上選擇,模板上選擇“MFC應(yīng)用程序應(yīng)用程序”,在,在“名稱名稱”文本框中輸入

25、文本框中輸入“ex07_3”,單擊,單擊“確定確定”按鈕,彈出按鈕,彈出“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框。對(duì)話框。 (3) 在在“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框?qū)υ捒颉皯?yīng)用程序類型應(yīng)用程序類型”選項(xiàng)中,選中選項(xiàng)中,選中“對(duì)話框?qū)υ捒颉眴芜x按鈕,其他使用默認(rèn)值,單選按鈕,其他使用默認(rèn)值,然后單擊然后單擊“完成完成”按鈕,就可以完成工程的創(chuàng)建。按鈕,就可以完成工程的創(chuàng)建。返回返回返回返回332添加靜態(tài)控件添加靜態(tài)控件(1) 在對(duì)話框編輯器中插入一個(gè)在對(duì)話框編輯器中插入一個(gè)Group Box;(2) 在對(duì)話框編輯器中插入兩個(gè)在對(duì)話框編輯器中插入兩個(gè)Static Text(3) 在資源

26、視圖中,選中在資源視圖中,選中ex07_3.rc,點(diǎn)擊鼠標(biāo),點(diǎn)擊鼠標(biāo)右鍵,彈出菜單,選擇右鍵,彈出菜單,選擇“添加資源添加資源”,彈出,彈出“添加資源添加資源”對(duì)話框,選擇對(duì)話框,選擇“bitmap”,點(diǎn)擊,點(diǎn)擊“導(dǎo)入導(dǎo)入”,導(dǎo)入位圖。修改位圖,導(dǎo)入位圖。修改位圖ID為為IDB_BITMAP_CHILDREN(4) 在對(duì)話框編輯器中插入一個(gè)在對(duì)話框編輯器中插入一個(gè)Picture Control,修改修改“Type”為為bitmap,“Image”為剛導(dǎo)入位為剛導(dǎo)入位圖的圖的IDIDB_BITMAP_CHILDREN返回返回返回返回34表表7-5 靜態(tài)控件屬性設(shè)置靜態(tài)控件屬性設(shè)置控件類型IDCA

27、PTIONTYPEIMAGECroup BoxIDC_STATIC_GROUPBOX1靜態(tài)控件演示Ststic TextIDC_STATIC_TEXT靜態(tài)文本控件IDC_STATIC_TEXT2靜態(tài)圖形控件Picture ControlIDC_STATIC_PICTURE_BMPBITMAPIDB_BITMAP_CHILDREN返回返回返回返回35(5) 使用使用Ctrl + T預(yù)覽對(duì)話框效果如圖預(yù)覽對(duì)話框效果如圖7-25所示所示返回返回返回返回363添加編輯控件添加編輯控件(1) 在對(duì)話框編輯器中插入一個(gè)在對(duì)話框編輯器中插入一個(gè)Group Box。(2) 在對(duì)話框編輯器中插入兩個(gè)在對(duì)話框編輯

28、器中插入兩個(gè)Static Text。(3) 在對(duì)話框編輯器中插入兩個(gè)在對(duì)話框編輯器中插入兩個(gè)Edit Control。(4) 使用使用Ctrl + T預(yù)覽對(duì)話框效果預(yù)覽對(duì)話框效果返回返回返回返回374添加列表框控件添加列表框控件(1) 在對(duì)話框編輯器中插入一個(gè)在對(duì)話框編輯器中插入一個(gè)Group Box。(2) 在對(duì)話框編輯器中插入一個(gè)在對(duì)話框編輯器中插入一個(gè)Static Text。(3) 在對(duì)話框編輯器中插入一個(gè)在對(duì)話框編輯器中插入一個(gè)List Box。(4) 使用使用Ctrl + T預(yù)覽對(duì)話框效果,調(diào)整給控件預(yù)覽對(duì)話框效果,調(diào)整給控件位置。位置。返回返回返回返回385添加組合框控件添加組合框

29、控件(1) 在對(duì)話框編輯器中插入一個(gè)在對(duì)話框編輯器中插入一個(gè)Group Box。(2) 在對(duì)話框編輯器中插入三個(gè)在對(duì)話框編輯器中插入三個(gè)Static Text。(3) 在對(duì)話框編輯器中插入兩個(gè)在對(duì)話框編輯器中插入兩個(gè)Edit Control。(4) 使用使用Ctrl + T預(yù)覽對(duì)話框效果,調(diào)整給控件位置預(yù)覽對(duì)話框效果,調(diào)整給控件位置返回返回返回返回396添加滾動(dòng)條控件添加滾動(dòng)條控件(1) 在對(duì)話框編輯器中插入一個(gè)在對(duì)話框編輯器中插入一個(gè)Group Box;(2) 在對(duì)話框編輯器中插入兩個(gè)在對(duì)話框編輯器中插入兩個(gè)Static Text(3) 在對(duì)話框編輯器中插入一個(gè)水平、一個(gè)垂在對(duì)話框編輯器中插

30、入一個(gè)水平、一個(gè)垂直滾動(dòng)條直滾動(dòng)條(4) 使用使用Ctrl + T預(yù)覽對(duì)話框效果,調(diào)整給控件預(yù)覽對(duì)話框效果,調(diào)整給控件位置位置返回返回返回返回407添加按鈕添加按鈕(1) 在對(duì)話框中添加在對(duì)話框中添加8個(gè)按鈕。按表個(gè)按鈕。按表7-10設(shè)置標(biāo)簽設(shè)置標(biāo)簽控件類型IDCAPTIONCButtonIDC_BUTTON1改變靜態(tài)文本內(nèi)容IDC_BUTTON2改變靜態(tài)圖像IDC_BUTTON3改變單行編輯內(nèi)容IDC_BUTTON4改變多行內(nèi)容IDC_BUTTON5增加列表內(nèi)容IDC_BUTTON6增加列表內(nèi)容IDC_BUTTON7選定組合內(nèi)容IDC_BUTTON7設(shè)定滾動(dòng)條位置返回返回返回返回41(2)

31、使用Ctrl + T預(yù)覽對(duì)話框效果,調(diào)整給控件位置。效果如圖7-26所示返回返回返回返回42 8添加變量添加變量 (1) 為單行編輯控件添加變量為單行編輯控件添加變量m_sEdit,步驟如下:,步驟如下: 在單行編輯控件上,點(diǎn)擊鼠標(biāo)右鍵彈出菜單,選擇在單行編輯控件上,點(diǎn)擊鼠標(biāo)右鍵彈出菜單,選擇“添加變量添加變量”; 在添加變量對(duì)話框中輸入在添加變量對(duì)話框中輸入m_sEdit ,如圖,如圖7-27所示;所示; 點(diǎn)擊完成完成添加。點(diǎn)擊完成完成添加。 (2)為多行編輯控件添加變量)為多行編輯控件添加變量m_mEdit; (3)為列表控件添加變量)為列表控件添加變量m_listBox; (4)為)為3

32、個(gè)組合框添加變量個(gè)組合框添加變量m_cmbbox1,m_cmbbox2,m_cmbbox3; (5)為水平、垂直滾動(dòng)條添加變量)為水平、垂直滾動(dòng)條添加變量m_hScroll,m_vScroll。返回返回返回返回439添加消息處理添加消息處理(1) 通過(guò)類視圖下方的函數(shù)窗口定位到通過(guò)類視圖下方的函數(shù)窗口定位到Cex07_3Dlg:OnInitDialog()函數(shù)。添加下列部函數(shù)。添加下列部分代碼,在該函數(shù)中初始化列表控件的數(shù)據(jù)和分代碼,在該函數(shù)中初始化列表控件的數(shù)據(jù)和設(shè)置滾動(dòng)條的滾動(dòng)范圍。設(shè)置滾動(dòng)條的滾動(dòng)范圍。(2) 為窗體添加水平和垂直滾動(dòng)消息函數(shù),在為窗體添加水平和垂直滾動(dòng)消息函數(shù),在類視圖

33、中選中對(duì)話框類點(diǎn)擊屬性,在消息窗口類視圖中選中對(duì)話框類點(diǎn)擊屬性,在消息窗口中添加中添加OnHScroll、OnVScroll函數(shù)。如圖函數(shù)。如圖7-28所示。所示。返回返回返回返回44(3)為按鈕添加消息處理函數(shù),并添加消息)為按鈕添加消息處理函數(shù),并添加消息處理代碼。在對(duì)話框中雙擊按鈕,就會(huì)自動(dòng)添處理代碼。在對(duì)話框中雙擊按鈕,就會(huì)自動(dòng)添加該按鈕的處理函數(shù)。加該按鈕的處理函數(shù)。 改變靜態(tài)文本按鈕:改變靜態(tài)文本按鈕: 改變靜態(tài)圖像按鈕:(需要在資源視圖中添改變靜態(tài)圖像按鈕:(需要在資源視圖中添加 一 個(gè) 新 的 位 圖 資 源 ,加 一 個(gè) 新 的 位 圖 資 源 , i d 為為IDB_BIT

34、MAP_NEW) 改變單行編輯內(nèi)容按鈕:改變單行編輯內(nèi)容按鈕: 改變多行編輯內(nèi)容按鈕:改變多行編輯內(nèi)容按鈕: 添加列表內(nèi)容按鈕添加列表內(nèi)容按鈕 刪除列表內(nèi)容按鈕刪除列表內(nèi)容按鈕 選定組合內(nèi)容按鈕選定組合內(nèi)容按鈕 設(shè)定滾動(dòng)條位置按鈕設(shè)定滾動(dòng)條位置按鈕返回返回返回返回4510生成并運(yùn)行項(xiàng)目生成并運(yùn)行項(xiàng)目運(yùn)行效果如圖運(yùn)行效果如圖7-29所示所示返回返回返回返回46 旋轉(zhuǎn)按鈕控件的應(yīng)用示例旋轉(zhuǎn)按鈕控件的應(yīng)用示例ex07_4 (1) 在集成編輯環(huán)境中依次選擇在集成編輯環(huán)境中依次選擇“文件文件”“新建新建”“項(xiàng)目項(xiàng)目”菜菜單命令,或直接按快捷鍵單命令,或直接按快捷鍵“Ctrl+Shift+N”,打開,打開

35、“新建項(xiàng)目新建項(xiàng)目”對(duì)話框。對(duì)話框。 (2) 在在“新建項(xiàng)目新建項(xiàng)目”對(duì)話框中,在項(xiàng)目類型上選擇對(duì)話框中,在項(xiàng)目類型上選擇“MFC”,模,模板上選擇板上選擇“MFC應(yīng)用程序應(yīng)用程序”,在,在“名稱名稱”文本框中輸入文本框中輸入“ex07_4,單擊,單擊“確定確定”按鈕,彈出按鈕,彈出“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)對(duì)話框。話框。 (3)在)在“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框?qū)υ捒颉皯?yīng)用程序類型應(yīng)用程序類型”選項(xiàng)中,選項(xiàng)中,選中選中“對(duì)話框?qū)υ捒颉眴芜x按鈕,其他使用默認(rèn)值,然后單擊單選按鈕,其他使用默認(rèn)值,然后單擊“完成完成”按鈕,就可以完成工程的創(chuàng)建。按鈕,就可以完成工程的創(chuàng)建。

36、(4)在對(duì)話框中設(shè)置旋轉(zhuǎn)按鈕控件和編輯框控件,其)在對(duì)話框中設(shè)置旋轉(zhuǎn)按鈕控件和編輯框控件,其ID分別為分別為IDC_SPIN1和和IDC_EDIT1; (5)調(diào)整對(duì)話框大小,和控件位置。)調(diào)整對(duì)話框大小,和控件位置。 (6)設(shè)置旋轉(zhuǎn)按鈕的)設(shè)置旋轉(zhuǎn)按鈕的set buddy integer 屬性為屬性為true。 (7)在類視圖中選中)在類視圖中選中ex07_4Dlg類,點(diǎn)擊鼠標(biāo)右鍵,彈出菜單,類,點(diǎn)擊鼠標(biāo)右鍵,彈出菜單,選擇選擇“添加添加”-“添加變量添加變量”,類型:,類型:int,變量名:,變量名:m_nStep。 (8)通過(guò)類視圖下方的函數(shù)窗口定位到)通過(guò)類視圖下方的函數(shù)窗口定位到Cex

37、07_4Dlg:OnInitDialog()函數(shù)函數(shù) (9)完善旋轉(zhuǎn)按鈕的消息處理,在對(duì)話框編輯器中選中編輯控)完善旋轉(zhuǎn)按鈕的消息處理,在對(duì)話框編輯器中選中編輯控件(件(IDC_EDIT1),鼠標(biāo)右鍵彈出菜單,選擇),鼠標(biāo)右鍵彈出菜單,選擇“屬性屬性”,在,在“屬性屬性”對(duì)話框中選中對(duì)話框中選中“控件事件控件事件”對(duì)編輯框的對(duì)編輯框的EN_CHANGE消息處理函數(shù),以使伙伴窗口編輯控件的數(shù)據(jù)隨著旋轉(zhuǎn)按鈕一起消息處理函數(shù),以使伙伴窗口編輯控件的數(shù)據(jù)隨著旋轉(zhuǎn)按鈕一起變化,定位到該函數(shù)變化,定位到該函數(shù) 返回返回返回返回47(10)生成運(yùn)行程序;效果如圖)生成運(yùn)行程序;效果如圖7-30所示所示返回返

38、回返回返回482進(jìn)度條控件進(jìn)度條控件CProgressCtrl :;Create() 建立進(jìn)度條控件對(duì)象建立進(jìn)度條控件對(duì)象并綁定對(duì)象。并綁定對(duì)象。Create的調(diào)用格式如下:的調(diào)用格式如下:virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );返回返回返回返回49 進(jìn)度條控件的應(yīng)用示例進(jìn)度條控件的應(yīng)用示例ex07_5 (1) 在集成編輯環(huán)境中依次選擇在集成編輯環(huán)境中依次選擇“文件文件”“新建新建”“項(xiàng)目項(xiàng)目”菜菜單命令,或直接按快捷鍵單命令,或直接按快捷鍵“Ctrl+Shif

39、t+N”,打開,打開“新建項(xiàng)目新建項(xiàng)目”對(duì)對(duì)話框。話框。 (2)在)在“新建項(xiàng)目新建項(xiàng)目”對(duì)話框中,在項(xiàng)目類型上選擇對(duì)話框中,在項(xiàng)目類型上選擇“MFC”,模,模板上選擇板上選擇“MFC應(yīng)用程序應(yīng)用程序”,在,在“名稱名稱”文本框中輸入文本框中輸入“ex07_5”,單擊,單擊“確定確定”按鈕,彈出按鈕,彈出“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)對(duì)話框。話框。 (3)在)在“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框?qū)υ捒颉皯?yīng)用程序類型應(yīng)用程序類型”選項(xiàng)中,選項(xiàng)中,選中選中“對(duì)話框?qū)υ捒颉眴芜x按鈕,其他使用默認(rèn)值,然后單擊單選按鈕,其他使用默認(rèn)值,然后單擊“完成完成”按鈕,就可以完成工程的創(chuàng)建。按鈕,就

40、可以完成工程的創(chuàng)建。 (4)在對(duì)話框中擺放進(jìn)度條和靜態(tài)文本控件,其)在對(duì)話框中擺放進(jìn)度條和靜態(tài)文本控件,其ID分別為分別為IDC_PROG1和和IDC_PERCENT; (5)在對(duì)話框類中定義兩個(gè)變量,)在對(duì)話框類中定義兩個(gè)變量,m_nMax;m_nStep表示進(jìn)度表示進(jìn)度條的最大值和步長(zhǎng);條的最大值和步長(zhǎng); (6)定位到對(duì)話框初始代碼中增加進(jìn)度條空間的范圍和位置)定位到對(duì)話框初始代碼中增加進(jìn)度條空間的范圍和位置 返回返回返回返回50(7)處理對(duì)話框)處理對(duì)話框WM_TIMER消息處理,在消息處理,在類視圖中選中類視圖中選中Cex07_5Dlg類,點(diǎn)擊鼠標(biāo)右鍵彈類,點(diǎn)擊鼠標(biāo)右鍵彈出菜單,選擇出

41、菜單,選擇“屬性屬性”菜單,在菜單,在“消息消息”中選中選中中WM_TIMER,為對(duì)話框添加定時(shí)處理函數(shù)。,為對(duì)話框添加定時(shí)處理函數(shù)。 (8)運(yùn)行程序;效果如圖)運(yùn)行程序;效果如圖7-31所示所示返回返回返回返回513滑塊控件滑塊控件滑塊控件(滑塊控件(Slider Control)也叫軌道條控件,)也叫軌道條控件,其主要是用一個(gè)帶有軌道和滑標(biāo)的小窗口以及其主要是用一個(gè)帶有軌道和滑標(biāo)的小窗口以及窗口上的刻度,來(lái)讓用戶選擇一個(gè)離散數(shù)據(jù)或窗口上的刻度,來(lái)讓用戶選擇一個(gè)離散數(shù)據(jù)或一個(gè)連續(xù)的數(shù)值區(qū)間。通過(guò)鼠標(biāo)或鍵盤來(lái)進(jìn)行一個(gè)連續(xù)的數(shù)值區(qū)間。通過(guò)鼠標(biāo)或鍵盤來(lái)進(jìn)行數(shù)據(jù)的選擇操作,這在數(shù)據(jù)的選擇操作,這在W

42、IN XP中的很多應(yīng)用中的很多應(yīng)用程序中都可以看到,如控件面板中的鼠標(biāo)等,程序中都可以看到,如控件面板中的鼠標(biāo)等,滑塊既可以是水平方式的也可以是垂直方式的?;瑝K既可以是水平方式的也可以是垂直方式的。返回返回返回返回52滑動(dòng)條控件的風(fēng)格如下:滑動(dòng)條控件的風(fēng)格如下:TBS_HORZ 滑塊是水平方向的;滑塊是水平方向的;TBS_VERT 滑塊是垂直方向的;滑塊是垂直方向的;TBS_LEFT 滑塊位于窗口左側(cè);滑塊位于窗口左側(cè);TBS_RIGHT 滑塊位于窗口右側(cè);滑塊位于窗口右側(cè);TBS_TOP 滑塊位于窗口頂部;滑塊位于窗口頂部;TBS_BOTTOM 滑塊位于窗口底部;滑塊位于窗口底部;TBS_B

43、OTH 滑塊位于窗口兩側(cè);滑塊位于窗口兩側(cè);TBS_AUTOTICKS滑塊具有刻度,默認(rèn);滑塊具有刻度,默認(rèn);TBS_NOTICKS 滑塊不具有刻度?;瑝K不具有刻度。返回返回返回返回53CSliderCtrl:Create建立滑動(dòng)條控件對(duì)象并綁建立滑動(dòng)條控件對(duì)象并綁定對(duì)象定對(duì)象virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );返回返回返回返回54 滑塊控件的應(yīng)用示例滑塊控件的應(yīng)用示例ex07_6 (1)在集成編輯環(huán)境中依次選擇)在集成編輯環(huán)境中依次選擇“文件文件”“新新建

44、建”“項(xiàng)目項(xiàng)目”菜單命令,或直接按快捷鍵菜單命令,或直接按快捷鍵“Ctrl+Shift+N”,打開,打開“新建項(xiàng)目新建項(xiàng)目”對(duì)話框。對(duì)話框。 (2)在)在“新建項(xiàng)目新建項(xiàng)目”對(duì)話框中,在項(xiàng)目類型上選擇對(duì)話框中,在項(xiàng)目類型上選擇“MFC”,模板上選擇,模板上選擇“MFC應(yīng)用程序應(yīng)用程序”,在,在“名稱名稱”文本框中輸入文本框中輸入“ex07_6”,單擊,單擊“確定確定”按鈕,彈出按鈕,彈出“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框。對(duì)話框。 (3)在)在“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框?qū)υ捒颉皯?yīng)用程序類應(yīng)用程序類型型”選項(xiàng)中,選中選項(xiàng)中,選中“對(duì)話框?qū)υ捒颉眴芜x按鈕,其他使用默單選按鈕,其

45、他使用默認(rèn)值,然后單擊認(rèn)值,然后單擊“完成完成”按鈕,就可以完成工程的創(chuàng)按鈕,就可以完成工程的創(chuàng)建。建。 (4)在對(duì)話框中擺放兩個(gè)滑塊控件和兩個(gè)靜態(tài)文本控)在對(duì)話框中擺放兩個(gè)滑塊控件和兩個(gè)靜態(tài)文本控件,滑塊控件其件,滑塊控件其ID分別為分別為IDC_SLIDER1和和IDC_SLIDER2,在屬性窗口中改變相應(yīng)屬性,在屬性窗口中改變相應(yīng)屬性 返回返回返回返回55(5)在對(duì)話框類中定義兩個(gè)變量,)在對(duì)話框類中定義兩個(gè)變量,m_nSlider1;m_nSlider2表示兩個(gè)滑塊的當(dāng)前表示兩個(gè)滑塊的當(dāng)前值;值;(6)為窗體添加水平和垂直滾動(dòng)消息函數(shù),)為窗體添加水平和垂直滾動(dòng)消息函數(shù),在類視圖中選中

46、對(duì)話框類點(diǎn)擊屬性,在消息窗在類視圖中選中對(duì)話框類點(diǎn)擊屬性,在消息窗口中添加口中添加OnHScroll、OnVScroll函數(shù)函數(shù)(7)在對(duì)話框)在對(duì)話框Cex07_6Dlg:OnInitDialog()中中設(shè)置初始狀態(tài)設(shè)置初始狀態(tài)返回返回返回返回56(8)運(yùn)行程序;效果如圖)運(yùn)行程序;效果如圖7-32所示所示圖7-32 滑塊控件示例返回返回返回返回574屬性頁(yè)控件屬性頁(yè)控件通過(guò)調(diào)用通過(guò)調(diào)用Create創(chuàng)建一個(gè)窗口,函數(shù)聲明如下:創(chuàng)建一個(gè)窗口,函數(shù)聲明如下:virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParen

47、tWnd, UINT nID );返回返回返回返回58 屬性頁(yè)控件的應(yīng)用示例屬性頁(yè)控件的應(yīng)用示例ex07_7 (1)在集成編輯環(huán)境中依次選擇)在集成編輯環(huán)境中依次選擇“文件文件”“新建新建”“項(xiàng)目項(xiàng)目”菜單命令,菜單命令,或直接按快捷鍵或直接按快捷鍵“Ctrl+Shift+N”,打開,打開“新建項(xiàng)目新建項(xiàng)目”對(duì)話框。對(duì)話框。 (2)在)在“新建項(xiàng)目新建項(xiàng)目”對(duì)話框中,在項(xiàng)目類型上選擇對(duì)話框中,在項(xiàng)目類型上選擇“MFC”,模板上選,模板上選擇擇“MFC應(yīng)用程序應(yīng)用程序”,在,在“名稱名稱”文本框中輸入文本框中輸入“ex07_7”,單擊,單擊“確確定定”按鈕,彈出按鈕,彈出“MFC應(yīng)用程序向?qū)?yīng)用

48、程序向?qū)А睂?duì)話框。對(duì)話框。 (3)在)在“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框?qū)υ捒颉皯?yīng)用程序類型應(yīng)用程序類型”選項(xiàng)中,選中選項(xiàng)中,選中“對(duì)話框?qū)υ捒颉眴芜x按鈕,其他使用默認(rèn)值,然后單擊單選按鈕,其他使用默認(rèn)值,然后單擊“完成完成”按鈕,就可按鈕,就可以完成工程的創(chuàng)建。以完成工程的創(chuàng)建。 (4)在對(duì)話框資源上從工具箱中添加上一個(gè))在對(duì)話框資源上從工具箱中添加上一個(gè)Tab Control 控件,根據(jù)需控件,根據(jù)需要修改一下屬性,然后右擊控件,為這個(gè)控件添加一個(gè)變量,將此控件要修改一下屬性,然后右擊控件,為這個(gè)控件添加一個(gè)變量,將此控件跟一個(gè)跟一個(gè)CTabCtrl類變量綁定在一起,這里設(shè)為類變量

49、綁定在一起,這里設(shè)為m_tabctrl (5)創(chuàng)建兩個(gè)新的對(duì)話框資源,其屬性作如下修改:)創(chuàng)建兩個(gè)新的對(duì)話框資源,其屬性作如下修改: Border:none /邊界為空邊界為空,這樣就沒(méi)了標(biāo)題欄這樣就沒(méi)了標(biāo)題欄 Style :Child / 這樣這個(gè)模板就可以當(dāng)作另一個(gè)窗口的子窗口了。這樣這個(gè)模板就可以當(dāng)作另一個(gè)窗口的子窗口了。 在對(duì)話框編輯器中雙擊這個(gè)兩個(gè)對(duì)話框添加對(duì)話框類在對(duì)話框編輯器中雙擊這個(gè)兩個(gè)對(duì)話框添加對(duì)話框類CdialogFirst、CdialogSecond。 (6)在主對(duì)話框中添加)在主對(duì)話框中添加CdialogFirst,CdialogSecond類的變量類的變量m_dlg1

50、、m_dlg2返回返回返回返回59(7)在)在Cex07_7Dlg:OnInitDialog()添加如下黑體部分代碼添加如下黑體部分代碼BOOL Cex07_7Dlg:OnInitDialog()CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX & 0 xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);SetIcon(m_hIcon, TRUE);/

51、 設(shè)置大圖標(biāo)設(shè)置大圖標(biāo)SetIcon(m_hIcon, FALSE); / 設(shè)置小圖標(biāo)設(shè)置小圖標(biāo)/ TODO: 在此添加額外的初始化代碼在此添加額外的初始化代碼/ 設(shè)置設(shè)置tabctrl的頁(yè)面的頁(yè)面TCITEM item;item.mask = TCIF_TEXT;item.pszText =_T(第一頁(yè)第一頁(yè));m_tabctrl.InsertItem (0,&item);item.pszText =_T(第二頁(yè)第二頁(yè));m_tabctrl.InsertItem (1,&item);/ 把對(duì)話框?qū)ο笈c對(duì)話框控件、把對(duì)話框?qū)ο笈c對(duì)話框控件、tabctrl控件相關(guān)聯(lián)控件相關(guān)聯(lián)m_

52、dlg1.Create (IDD_DIALOG1,&m_tabctrl);m_dlg2.Create (IDD_DIALOG2,&m_tabctrl);/設(shè)置初始化位置設(shè)置初始化位置CRect r;m_tabctrl.GetClientRect (&r);m_dlg1.SetWindowPos (NULL,10,30,r.right -20,r.bottom -80,SWP_SHOWWINDOW);m_dlg2.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_HIDEWINDOW );return TRUE;

53、/ 除非將焦點(diǎn)設(shè)置到控件,否則返回除非將焦點(diǎn)設(shè)置到控件,否則返回TRUE(8)為)為tab控件添加控件添加TCN_SELCHANGE處理事件,代碼如下:處理事件,代碼如下:void Cex07_7Dlg:OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)/ TODO: 在此添加控件通知處理程序代碼在此添加控件通知處理程序代碼CRect r;m_tabctrl.GetClientRect (&r);switch(m_tabctrl.GetCurSel()case 0:m_dlg1.SetWindowPos(NULL,10,30,r.ri

54、ght-20,r.bottom-40,SWP_SHOWWINDOW); m_dlg2.SetWindowPos(NULL,10,30,r.right-20,r.bottom-40,SWP_HIDEWINDOW ); break;case 1: m_dlg1.SetWindowPos(NULL,10,30,r.right-20,r.bottom-40,SWP_HIDEWINDOW); m_dlg2.SetWindowPos(NULL,10,30,r.right-20,r.bottom-40,SWP_SHOWWINDOW ); break;*pResult = 0;返回返回返回返回60(9)示例運(yùn)

55、行結(jié)果如下圖)示例運(yùn)行結(jié)果如下圖7-33所示所示返回返回返回返回61 5樹型控件樹型控件 樹形控件可以用于樹形的結(jié)構(gòu),其中有一個(gè)根接點(diǎn)樹形控件可以用于樹形的結(jié)構(gòu),其中有一個(gè)根接點(diǎn)(Root)然后下面有許多子結(jié)點(diǎn),而每個(gè)子結(jié)點(diǎn)上又允然后下面有許多子結(jié)點(diǎn),而每個(gè)子結(jié)點(diǎn)上又允許有一個(gè)或多個(gè)或沒(méi)有子結(jié)點(diǎn)。許有一個(gè)或多個(gè)或沒(méi)有子結(jié)點(diǎn)。 MFC中使用中使用CTreeCtrl類來(lái)封裝樹形控件的各種操作,類來(lái)封裝樹形控件的各種操作,通過(guò)調(diào)用通過(guò)調(diào)用Create創(chuàng)建一個(gè)窗口,函數(shù)聲明如下:創(chuàng)建一個(gè)窗口,函數(shù)聲明如下: virtual BOOL Create( DWORD dwStyle, const RECT&

56、amp; rect, CWnd* pParentWnd, UINT nID );返回返回返回返回62 樹型控件(樹型控件(CTtreeCtrl)的應(yīng)用示例)的應(yīng)用示例ex07_8 (1)在集成編輯環(huán)境中依次選擇)在集成編輯環(huán)境中依次選擇“文件文件”“新建新建”“項(xiàng)目項(xiàng)目”菜單命令,或直接按快捷鍵菜單命令,或直接按快捷鍵“Ctrl+Shift+N”,打開,打開“新建項(xiàng)目新建項(xiàng)目”對(duì)話框。對(duì)話框。 (2)在)在“新建項(xiàng)目新建項(xiàng)目”對(duì)話框中,在項(xiàng)目類型上選擇對(duì)話框中,在項(xiàng)目類型上選擇“MFC”,模,模板上選擇板上選擇“MFC應(yīng)用程序應(yīng)用程序”,在,在“名稱名稱”文本框中輸入文本框中輸入“ex07_8

57、”,單擊,單擊“確定確定”按鈕,彈出按鈕,彈出“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)對(duì)話框。話框。 (3)在)在“MFC應(yīng)用程序向?qū)?yīng)用程序向?qū)А睂?duì)話框?qū)υ捒颉皯?yīng)用程序類型應(yīng)用程序類型”選項(xiàng)中,選項(xiàng)中,選中選中“對(duì)話框?qū)υ捒颉眴芜x按鈕,其他使用默認(rèn)值,然后單擊單選按鈕,其他使用默認(rèn)值,然后單擊“完成完成”按鈕,就可以完成工程的創(chuàng)建。按鈕,就可以完成工程的創(chuàng)建。 (4)為項(xiàng)目添加兩個(gè)樹型控件和兩個(gè)靜態(tài)標(biāo)簽。)為項(xiàng)目添加兩個(gè)樹型控件和兩個(gè)靜態(tài)標(biāo)簽。 (5)為系統(tǒng)添加一個(gè)繼承)為系統(tǒng)添加一個(gè)繼承CstringArray的類的類CSortStringArray,用于排序。用于排序。 (6)為項(xiàng)目添加一個(gè)

58、繼承)為項(xiàng)目添加一個(gè)繼承 CtreeCtrl的類的類CdirTreeCtrl,用于得,用于得到系統(tǒng)圖標(biāo)和系統(tǒng)中盤符,及相應(yīng)盤符中文件夾、文件信息。到系統(tǒng)圖標(biāo)和系統(tǒng)中盤符,及相應(yīng)盤符中文件夾、文件信息。 返回返回返回返回63 (7)為兩個(gè)樹型控件分別添加變量)為兩個(gè)樹型控件分別添加變量CDirTreeCtrl m_treeCtrl使用繼承類使用繼承類;CTreeCtrl m_treeCtrl2; (8)在主對(duì)話框的初始話函數(shù)中)在主對(duì)話框的初始話函數(shù)中Cex07_8Dlg:OnInitDialog()添加代碼添加代碼 (9)示例運(yùn)行結(jié)果如圖)示例運(yùn)行結(jié)果如圖7-34所示所示 返回返回返回返回64

59、7.3 ActiveX控件ActiveX技術(shù)既包含服務(wù)器技術(shù),也包含客戶技術(shù)既包含服務(wù)器技術(shù),也包含客戶端技術(shù),其主要內(nèi)容如下:端技術(shù),其主要內(nèi)容如下:(1) ActiveX控件(控件(Control) (2) ActiveX文檔文檔(Document)(3) ActiveX腳本描述腳本描述(4) ActiveX服務(wù)器框架服務(wù)器框架(5) ActiveX自動(dòng)控制自動(dòng)控制返回返回返回返回651ActiveX控件的創(chuàng)建控件的創(chuàng)建 本例將開發(fā)一個(gè)時(shí)鐘控件。在本例將開發(fā)一個(gè)時(shí)鐘控件。在Visual C+ 2008開發(fā)環(huán)境中,選擇【文件開發(fā)環(huán)境中,選擇【文件/新建】菜單項(xiàng),在打開的對(duì)話框上選擇【項(xiàng)目】選

60、項(xiàng)卡,并在列表框中新建】菜單項(xiàng),在打開的對(duì)話框上選擇【項(xiàng)目】選項(xiàng)卡,并在列表框中選擇選擇MFC ActiveX ControlWizard,同時(shí)工程名設(shè)置為:,同時(shí)工程名設(shè)置為:Clock.然后單擊然后單擊【確定】按鈕,進(jìn)入【確定】按鈕,進(jìn)入MFC ActiveX ControlWizard向?qū)У牡谝徊剑鐖D向?qū)У牡谝徊?,如圖7-35所示:所示:返回返回返回返回66單擊【下一步】按鈕,進(jìn)入單擊【下一步】按鈕,進(jìn)入MFC ActiveX ControlWizard向?qū)У牡诙剑鐖D向?qū)У牡诙?,如圖7-36所示,該界面詢問(wèn)用戶該工程中的控件是否想要指定運(yùn)行時(shí)許可。我們花費(fèi)大量所示,該界面詢問(wèn)用戶該工程中的控件是否想要指定運(yùn)行時(shí)許可。我們花費(fèi)大量的時(shí)間開發(fā)了一個(gè)功能強(qiáng)大的控件

溫馨提示

  • 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)論