![第9章-子窗體控件_第1頁(yè)](http://file4.renrendoc.com/view/682437975e1c9d77df63683e3b7c8b65/682437975e1c9d77df63683e3b7c8b651.gif)
![第9章-子窗體控件_第2頁(yè)](http://file4.renrendoc.com/view/682437975e1c9d77df63683e3b7c8b65/682437975e1c9d77df63683e3b7c8b652.gif)
![第9章-子窗體控件_第3頁(yè)](http://file4.renrendoc.com/view/682437975e1c9d77df63683e3b7c8b65/682437975e1c9d77df63683e3b7c8b653.gif)
![第9章-子窗體控件_第4頁(yè)](http://file4.renrendoc.com/view/682437975e1c9d77df63683e3b7c8b65/682437975e1c9d77df63683e3b7c8b654.gif)
![第9章-子窗體控件_第5頁(yè)](http://file4.renrendoc.com/view/682437975e1c9d77df63683e3b7c8b65/682437975e1c9d77df63683e3b7c8b655.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Windows程序設(shè)計(jì)教程第9章子窗體控件
在Windows應(yīng)用程序中,控件是人機(jī)交互的一個(gè)重要角色。例如,對(duì)話框中的按鈕、下拉列表框、編輯框等都是控件。在VisualC++中,MFC提供了許多控件類。通過(guò)這些封裝好的控件類,用戶可以方便地創(chuàng)建和使用控件。本章將依次講解Windows中的常用標(biāo)準(zhǔn)控件。通過(guò)本章的學(xué)習(xí),讀者可以熟練地為對(duì)話框添加和使用控件。
Windows標(biāo)準(zhǔn)控件9.1創(chuàng)建控件9.2按鈕控件9.3編輯控件1.4樹(shù)形控件9.59.1Windows標(biāo)準(zhǔn)控件
Windows操作系統(tǒng)有著大量的標(biāo)準(zhǔn)控件,控件隨處可見(jiàn)。讀者可以任意打開(kāi)一個(gè)窗口或是對(duì)話框,可以看到各式各樣的控件。本節(jié)將對(duì)Windows的標(biāo)準(zhǔn)控件做詳細(xì)介紹。9.1.1控件概述
VisualC++提供了許多常用的標(biāo)準(zhǔn)控件。通過(guò)VisualC++對(duì)話框編輯器和控件工具欄,可以將它們加入到對(duì)話框中。
VisualC++中的控件工具欄如圖9.1所示。
圖9.1控件工具欄
9.1.2窗口類CWnd所有控件類都是CWnd類的派生類,CWnd類的所有成員函數(shù)在控件類中都可以使用。在MFC中,CWnd類是一個(gè)很重要的類,它封裝了Windows窗口句柄HWND。在Windows編程中,每一個(gè)窗口都是由窗口句柄標(biāo)識(shí)的。
但是,CWnd類的對(duì)象和窗口句柄之間的概念并不是等同的。
CWnd對(duì)象的創(chuàng)建和銷毀,是由CWnd類的構(gòu)造函數(shù)和析構(gòu)函數(shù)完成的,而Windows窗口是Windows內(nèi)部的一種數(shù)據(jù)結(jié)構(gòu),它由CWnd類的Create成員函數(shù)創(chuàng)建,由其析構(gòu)函數(shù)銷毀。
一般情況下,創(chuàng)建一個(gè)窗口需要兩步:首先,調(diào)用CWnd類的構(gòu)造函數(shù),構(gòu)造一個(gè)CWnd對(duì)象,然后調(diào)用CWnd的成員函數(shù)Create(),創(chuàng)建窗口。
當(dāng)用戶要關(guān)閉該窗口時(shí),可以銷毀與窗口相關(guān)的CWnd對(duì)象,或者調(diào)用CWnd對(duì)象的成員函數(shù)DestroyWindow(),刪除窗口并銷毀其數(shù)據(jù)結(jié)構(gòu)。下面分別給出在CWnd類中定義的各種經(jīng)常用到的成員函數(shù)的定義及功能。1.改變窗口狀態(tài)在CWnd類中,改變窗口狀態(tài)的常用成員函數(shù)的定義及功能如表9.2所示。
2.改變窗口位置在CWnd類中,改變窗口位置的常用成員函數(shù)的定義及功能如表9-3所示。
3.使窗口失效,引發(fā)重繪
在CWnd類中,使窗口失效,引發(fā)重繪的常用成員函數(shù)的定義及功能如表9-4所示。
4.窗口查找在CWnd類中,查找窗口的常用成員函數(shù)的定義及功能如表9-5所示。
5.時(shí)鐘
在CWnd類中,與時(shí)鐘有關(guān)的常用成員函數(shù)的定義及功能如表9.6所示。
6.可以利用重載來(lái)添加消息處理的虛函數(shù)
在CWnd類中,常用的消息處理的虛函數(shù)的定義及功能如表9.7所示。
9.2創(chuàng)建控件
在VisualC++中,創(chuàng)建控件有兩種方法:一種是靜態(tài)創(chuàng)建,另一種是動(dòng)態(tài)創(chuàng)建。
(1)靜態(tài)創(chuàng)建:所謂靜態(tài)創(chuàng)建,就是在對(duì)話框模板中利用控件工具欄,直接將控件拖動(dòng)到對(duì)話框上,然后通過(guò)ClassWizard為控件添加變量、消息響應(yīng)函數(shù)。
(2)動(dòng)態(tài)創(chuàng)建:所謂動(dòng)態(tài)創(chuàng)建,就是在編寫(xiě)代碼時(shí)利用控件對(duì)應(yīng)的控件類構(gòu)造一個(gè)控件對(duì)象,然后調(diào)用Create()函數(shù)來(lái)創(chuàng)建該控件。9.2.1靜態(tài)創(chuàng)建控件創(chuàng)建靜態(tài)控件時(shí)必須先建立一個(gè)容器。該容器一般是對(duì)話框。然后從工具窗口中拖動(dòng)出所需要的控件放到容器(對(duì)話框)中,再適當(dāng)修改控件ID,設(shè)置控件的屬性即可。
圖9.2對(duì)話框模板
圖9.3對(duì)話框資源編輯器
圖9.4快捷菜單
圖9.5【PushButtonProperties】對(duì)話框
圖9.6設(shè)計(jì)后的主對(duì)話框
圖9.7【MFCClassWizard】對(duì)話框
圖9.8程序sample0901的運(yùn)行結(jié)果
9.2.2動(dòng)態(tài)創(chuàng)建控件
使用手動(dòng)添加控件的方法,用戶也能夠向窗口中添加所需的控件,靈活性很大。與靜態(tài)創(chuàng)建控件的方法相比,動(dòng)態(tài)創(chuàng)建控件需要調(diào)用Create()函數(shù)。動(dòng)態(tài)創(chuàng)建控件的過(guò)程如下所述。
(1)創(chuàng)建控件ID。
ID是控件的標(biāo)識(shí),創(chuàng)建控件前必須先為它設(shè)置一個(gè)ID。(2)建立控件對(duì)象。不同種類的控件對(duì)應(yīng)著不同的控件對(duì)象。
(3)調(diào)用控件對(duì)象的Create()函數(shù)創(chuàng)建動(dòng)態(tài)控件。(4)響應(yīng)動(dòng)態(tài)控件。(5)回收資源。不同種類的控件所調(diào)用的Create()函數(shù)參數(shù)意義有所不同。
下面通過(guò)動(dòng)態(tài)創(chuàng)建按鈕控件來(lái)向讀者具體展示動(dòng)態(tài)創(chuàng)建控件與靜態(tài)創(chuàng)建控件的不同。1.動(dòng)態(tài)創(chuàng)建控件
圖9.9【StringProperties】對(duì)話框
圖9.10查看編輯器2.響應(yīng)動(dòng)態(tài)控件
與靜態(tài)創(chuàng)建控件不同,動(dòng)態(tài)控件的響應(yīng)不能使用ClassWizard添加,而只能手動(dòng)添加。下面為上例所創(chuàng)建的按鈕控件添加消息響應(yīng)。
圖9.11程序sample0902的運(yùn)行結(jié)果
圖9.12【AddMemberFunction】對(duì)話框
圖9.13程序sample0902的運(yùn)行結(jié)果9.3按鈕控件
按鈕控件是最常用的控件。在Windows中,按鈕控件分為3種:下壓式按鈕、單選按鈕和復(fù)選框。在上一節(jié)已經(jīng)對(duì)下壓式按鈕進(jìn)行了詳細(xì)介紹。下面將對(duì)單選按鈕和復(fù)選框進(jìn)行介紹。9.3.1單選按鈕單選按鈕由一個(gè)圓形按鈕和一個(gè)靜態(tài)文本框組成。單選按鈕可以有選中和未選中兩種狀態(tài)。當(dāng)單擊它時(shí),會(huì)在中間顯示一個(gè)小黑點(diǎn),否則為空。單選按鈕經(jīng)常是成組出現(xiàn)的,但一次僅可以選擇一組中的一個(gè)單選按鈕。
單選按鈕的主要方法有兩種:GetCheck()和SetCheck()。其中,GetCheck()函數(shù)用于獲取單選按鈕的選中狀態(tài),SetCheck()函數(shù)用于設(shè)置單選按鈕的選中狀態(tài)。二者原型如下:
int
GetCheck()const;voidSetCheck(int
nCheck);
(1)BN_CLICKED:當(dāng)用戶選擇該控件時(shí),產(chǎn)生該事件。按鈕父窗口通過(guò)WM_COMMAND消息接收該通知消息。(2)BN_DOUBLECLICKED:當(dāng)用戶雙擊該控件時(shí),產(chǎn)生該事件。
圖9.14設(shè)計(jì)對(duì)話框資源
圖9.15【MFCClassWizard】對(duì)話框
圖9.16添加成員變量
圖9.17【AddMemberFunction】對(duì)話框
圖9.18程序smaple0903的運(yùn)行結(jié)果
9.3.2復(fù)選框
復(fù)選框由一個(gè)方框標(biāo)記和一個(gè)靜態(tài)文本框組成。同單選按鈕一樣,復(fù)選框也可以有選中和未選中兩種狀態(tài)。當(dāng)單擊它時(shí),會(huì)在中間一個(gè)對(duì)號(hào),否則為空。
復(fù)選框可以單個(gè)出現(xiàn),也可以成組出現(xiàn)。當(dāng)復(fù)選框成組出現(xiàn)時(shí),可以選擇一個(gè)或多個(gè)復(fù)選框。
復(fù)選框的主要方法和事件同單選按鈕的一樣,在此不在贅述。
圖9.19設(shè)計(jì)對(duì)話框資源
圖9.20【MFCClassWizard】對(duì)話框
圖9.21程序運(yùn)行結(jié)果9.4編輯控件編輯框用來(lái)進(jìn)行文本輸入和編輯,有多行和單行編輯框之分。
CEdit類封裝了編輯框的功能。單行編輯框一般用來(lái)輸入單行數(shù)據(jù),如名字、密碼等。多行編輯框一般用來(lái)輸入大段文字,如內(nèi)容介紹、記事本等。
因此,編輯框控件通過(guò)選取樣式,可具有如下功能:(1)可自動(dòng)轉(zhuǎn)換用戶輸入,如大小寫(xiě)的轉(zhuǎn)換等;(2)可使用某個(gè)字符(如密碼輸入的*)代替顯示用戶的輸入;(3)可支持多行編輯等。
9.5樹(shù)形控件
樹(shù)形控件在大多數(shù)的系統(tǒng)中都會(huì)使用到。該控件以其層次鮮明、操作簡(jiǎn)便的優(yōu)點(diǎn)得到廣大開(kāi)發(fā)人員以及使用人員的認(rèn)可。9.5.1樹(shù)形控件概述
樹(shù)形控件可以用于樹(shù)形的結(jié)構(gòu)。其中有一個(gè)根接點(diǎn)(Root),然后下面有許多子節(jié)點(diǎn),而每個(gè)子節(jié)點(diǎn)上允許有一個(gè)、多個(gè)或沒(méi)有子節(jié)點(diǎn)。
樹(shù)形控件的風(fēng)格可以通過(guò)其屬性對(duì)話框的【Styles】和【MoreStyles】選項(xiàng)卡進(jìn)行設(shè)置。樹(shù)形控件的屬性對(duì)話框如圖9.22所示。
圖9.22樹(shù)形控件的屬性對(duì)話框
9.5.2樹(shù)形控件的使用在樹(shù)形控件中每個(gè)節(jié)點(diǎn)都有一個(gè)句柄(HTREEITEM),同時(shí)添加節(jié)點(diǎn)時(shí)提供的參數(shù)為該節(jié)點(diǎn)的父節(jié)點(diǎn)句柄。其中根Root節(jié)點(diǎn)只有一個(gè),既不可以添加也不可以刪除。
添加節(jié)點(diǎn)的函數(shù)如:HTREEITEMInsertItem(LPCTSTRlpszItem,HTREEITEMhParent=TVI_ROOT,HTREEITEMhInsertAfter=TVI_LAST);
圖9.23設(shè)計(jì)對(duì)話框資源
圖9.24設(shè)計(jì)樹(shù)形控件屬性
圖9.25程序sample0905的運(yùn)行結(jié)果小結(jié)本章主要介紹了Windows應(yīng)用程序中的控件。控件是應(yīng)用程序中人機(jī)交互的重要橋梁。本章主要介紹的是應(yīng)用程序中的常用控件,包括按鈕控件、編輯控件、樹(shù)形控件等。其中,按鈕控件與編輯控件使用率更高一些。另外,Windows的控件還有許多,請(qǐng)讀者嘗試使用。上機(jī)指導(dǎo)
實(shí)驗(yàn)一:熟悉標(biāo)準(zhǔn)控件實(shí)驗(yàn)內(nèi)容通過(guò)使用控件工具欄,向?qū)υ捒蛑刑砑痈鞣N控件。實(shí)驗(yàn)?zāi)康氖煜すぞ邫?,并能向?qū)υ捒蛑刑砑痈鞣N控件。
實(shí)現(xiàn)思路在9.1.1節(jié)中介紹了Windows中的各種標(biāo)準(zhǔn)控件。創(chuàng)建一個(gè)基于對(duì)話框的應(yīng)用程序,然后從控件工具欄中拖動(dòng)各個(gè)控件到對(duì)話框中,熟悉各種控件。
實(shí)驗(yàn)二:使用樹(shù)形控件實(shí)驗(yàn)內(nèi)容創(chuàng)建一個(gè)樹(shù)形控件,能把當(dāng)前所選擇選項(xiàng)的文字顯示在彈出的消息對(duì)話框中。
實(shí)驗(yàn)?zāi)康氖?/p>
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度航空航天零部件采購(gòu)及售后服務(wù)合同
- 現(xiàn)代科技在水環(huán)境治理中的應(yīng)用與展望
- 現(xiàn)代小區(qū)消防安全管理體系的智能化技術(shù)應(yīng)用
- 海外網(wǎng)絡(luò)營(yíng)銷平臺(tái)的選取與本地化運(yùn)營(yíng)技巧
- 現(xiàn)代熱風(fēng)技術(shù)未來(lái)辦公環(huán)境的創(chuàng)新設(shè)計(jì)
- 電商平臺(tái)的客戶服務(wù)與用戶忠誠(chéng)度培養(yǎng)
- 2025年度保密協(xié)議模板及執(zhí)行細(xì)則定制合同
- 生物醫(yī)藥技術(shù)創(chuàng)新在教育領(lǐng)域的應(yīng)用與探索
- 現(xiàn)代科技助力綠色生態(tài)住宅小區(qū)大門創(chuàng)新
- 生態(tài)城市中醫(yī)療廢棄物的安全處理策略
- 社區(qū)獲得性肺炎教學(xué)查房
- 病例展示(皮膚科)
- GB/T 39750-2021光伏發(fā)電系統(tǒng)直流電弧保護(hù)技術(shù)要求
- DB31T 685-2019 養(yǎng)老機(jī)構(gòu)設(shè)施與服務(wù)要求
- 燕子山風(fēng)電場(chǎng)項(xiàng)目安全預(yù)評(píng)價(jià)報(bào)告
- 高一英語(yǔ)課本必修1各單元重點(diǎn)短語(yǔ)
- 糖尿病運(yùn)動(dòng)指導(dǎo)課件
- 完整版金屬學(xué)與熱處理課件
- T∕CSTM 00640-2022 烤爐用耐高溫粉末涂料
- 心腦血管病的危害教學(xué)課件
- 民用機(jī)場(chǎng)不停航施工安全管理措施
評(píng)論
0/150
提交評(píng)論