第9章-子窗體控件_第1頁(yè)
第9章-子窗體控件_第2頁(yè)
第9章-子窗體控件_第3頁(yè)
第9章-子窗體控件_第4頁(yè)
第9章-子窗體控件_第5頁(yè)
已閱讀5頁(yè),還剩80頁(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)介

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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論