版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第7章對話框及常用控件7.1對話框的使用7.2常用控件思考題
7.1對話框的使用
對話框在Windows中應(yīng)用很普遍,它往往作為與用戶交互的場所,使用戶向應(yīng)用程序傳遞某些信息。對話框是一個特殊類型的窗口,任何對窗口進行的操作(如移動、最大化、最小化等)也可在對話框?qū)嵤EcVisualC++的其他窗口相比,對話框的最大優(yōu)點還在于它更易于放置控件,如利用編輯框、按鈕、列表框、組合框、滾動條、旋轉(zhuǎn)按鈕控件以及滑動條等來和用戶進行交互。7.1.1模式和無模式對話框
對話框有兩種類型,一種是模式對話框,另一種是無模式對話框。
1.模式對話框
在模式對話框情形,出現(xiàn)對話框時,應(yīng)用程序的主窗口都會被凍結(jié),無法執(zhí)行任何動作,如Word的字體對話框。當(dāng)彈出此對話框時,Word的主窗口將無法執(zhí)行任何編輯動作。
一般情況下,模式對話框會有[OK](確定)和[Cancel](取消)按鈕,單擊[OK](確定)按鈕,系統(tǒng)認(rèn)定用戶在對話框中的選擇或輸入有效,對話框退出;單擊[Cancel](取消)按鈕,對話框中的選擇或輸入無效,對話框退出,程序回復(fù)原有狀態(tài)。
模式對話框的應(yīng)用范圍較廣,平常所見到的對話框大部分為模式對話框。
2.無模式對話框
在無模式對話框情形,應(yīng)用程序的主窗口仍然可以操作,如Word中的查找對話框出現(xiàn)時,主窗口還是可以進行編輯操作。當(dāng)需要使用對話框時,只需像激活一般窗口一樣單擊對話框所在的區(qū)域即可。
MFC提供了CDialog對話框類,它同時支持這兩種對話框。
CDialog類是所有對話框類的基類。它定義了一個構(gòu)造函數(shù)和一個Create()成員函數(shù)來創(chuàng)建對話框。構(gòu)造函數(shù)根據(jù)對話框模板ID(通常有一個IDD前綴,如IDD_DIALOG1)來訪問對話框資源。該函數(shù)經(jīng)常用于構(gòu)造一個基于資源的模式對話框。而Create函數(shù)則使用對話框模板,由資源創(chuàng)建無模式對話框。
CDialog中有許多成員函數(shù),其中最重要的有四個:
(1)?virtualintCDialog::DoModal()。用于激活模式對話框,完成后返回對話框結(jié)果。在此對話框關(guān)閉前,用戶不能與應(yīng)用程序的其他窗口交互。函數(shù)返回一個int型數(shù)值,當(dāng)函數(shù)無法建立對話框時返回-1,發(fā)生錯誤時返回IDABORT。
(2)?virtualBOOLCDialog::OnInitDialog()。用于響應(yīng)WM_INITDIALOG消息。在Create()或DoModal()調(diào)用期間,系統(tǒng)會發(fā)送WM_INITDIALOG給對話框,在對話框顯示之前執(zhí)行該函數(shù)。
(3)?protectedvirtualvoidCDialog::OnOK()。在用戶單擊OK按鈕(ID為IDOK)時,調(diào)用該函數(shù)。
(4)?protectedvirtualvoidCDialog::OnCancel()。在用戶單擊Cancel按鈕或按Esc鍵時被調(diào)用。在模式對話框下,將自動終止模式對話框,DoModal()返回IDCANCEL。7.1.2創(chuàng)建對話框
創(chuàng)建對話框的方法有兩種途徑:
(1)使用AppWizard創(chuàng)建一個新的工程文件,選擇“你喜愛創(chuàng)建的應(yīng)用程序類型”時,在單選框中選中“基本對話”選項,如圖7-1所示。這種方法建立的應(yīng)用程序都是基于對話框框架的。
(2)在SDI或MDI方式下,通過選擇項目工作區(qū)的“ResourceView”選項卡,展開“Dialog”選項,可在里面手動添加用戶自定義對話框。圖7-1利用AppWizard建立對話框下面學(xué)習(xí)如何在SDI界面下創(chuàng)建一個對話框。
【例7-1】
為第6章例6-7增加一個對話框。
操作步驟如下:
(1)打開chap6_1工程文件。
(2)在項目區(qū)選中,展開文件夾,可以看到里面有一個名為的文件,用鼠標(biāo)左鍵雙擊,在右邊客戶區(qū)出現(xiàn)如圖7-2所示的對話框窗口。圖7-2關(guān)于chap6_1的對話框提示:該對話框為系統(tǒng)自帶對話框,提供用戶輸入對應(yīng)用程序版本和版權(quán)聲明等信息,用戶可對其文字內(nèi)容進行更改。該對話框與菜單欄中的“幫助”下拉子菜單中的“關(guān)于”子項相對應(yīng),選中該項即彈出此對話框。
此對話框并非希望的用戶自定義對話框,因此應(yīng)手動添加一新對話框。
(3)鼠標(biāo)右鍵單擊文件夾,在彈出的快捷菜單中選擇項并用鼠標(biāo)左鍵單擊確認(rèn),在“Dialog”文件夾下自動添加了一個名為的文件,在右邊客戶區(qū)出現(xiàn)如圖7-3所示的對話框窗口。圖7-3用戶新建對話框注意:對話框中只有兩個按鈕“OK”和“Cancel”,沒有別的內(nèi)容,需要用戶根據(jù)自己的需要手動添加控件。
提示:如果想刪除添加的對話框,可以直接在“Dialog”展開文件中選中要刪除的對話框,然后直接按鍵盤上“Delete”鍵將其刪除。
(4)現(xiàn)在已經(jīng)添加了一個對話框,運行程序,其結(jié)果如圖7-4所示。
提示:運行程序并未看到用戶自己建立的對話框。圖7-4例7-1運行結(jié)果
7.2常用控件
控件是在系統(tǒng)內(nèi)部定義的能夠完成特定功能的控制程序單元。在應(yīng)用程序中使用控件不僅簡化了編程,還能完成常用的各種功能。為了更好地發(fā)揮控件作用,用戶還必須理解和掌握控件的屬性、消息以及創(chuàng)建和使用的方法。
對話框中通常包含控件,用來與用戶進行信息的交互。下面介紹一下對話框常用的控件。
在進行對話框的界面設(shè)計中,VC++6.0中已經(jīng)提供了控件工具。當(dāng)用戶新建立一個對話框時,控件工具欄一般會自動彈出。如果沒有看到控件工具欄,則由用戶手動顯示。其方法為:
(1)在VC++6.0操作界面的工具欄右邊的空白處,單擊鼠標(biāo)右鍵,即彈出快捷菜單,如圖7-5所示。圖7-5顯示工具欄菜單
(2)選中“Controls”選項,即彈出控件工具欄,該工具欄提供了對話框界面設(shè)計的常用控件,如圖7-6所示。
VC++6.0提供了很多控件,而且每個控件都有大量的屬性和事件。下面將對一些常用的控件做介紹。圖7-6控件工具欄7.2.1靜態(tài)控件
一個靜態(tài)控件是用來顯示一個字符串、框、矩形、圖標(biāo)、位圖或增強的圖元文件。它可以被用來作為標(biāo)簽、框或用來分隔其他的控件。一個靜態(tài)控件一般不接收用戶輸入,也不產(chǎn)生通知消息。
在控制工具欄中,屬于靜態(tài)控件的有:靜態(tài)文本、組框和靜態(tài)圖片三種。其中靜態(tài)文本(StaticText)是一種單向交互的控制,只能支持應(yīng)用程序的輸出,一般不響應(yīng)用戶的輸入,通常作為顯示不更改文本信息使用。7.2.2按鈕
按鈕(Button)是Windows標(biāo)準(zhǔn)按鈕,通常也叫命令按鈕,是最常用的控件之一。
如果按鈕具有焦點,可以使用鼠標(biāo)左鍵、Enter鍵或空格鍵觸發(fā)該按鈕的Click事件。通過設(shè)置窗體的AcceptButton或CancelButton屬性,無論該按鈕是否有焦點,都可以使用戶通過按Enter鍵或Esc鍵來觸發(fā)按鈕的Click事件。當(dāng)使用ShowDialog方法顯示窗體時,可以使用按鈕的DialogResult屬性指定ShowDialog的返回值。
下面將介紹VC++6.0在對話框中添加按鈕及按鈕屬性的設(shè)置方法。
(1)在圖7-6所示的控件工具欄里選擇按鈕,在圖7-3新建的對話框中單擊鼠標(biāo)左鍵就在該對話框中增加了一個按鈕,如圖7-7所示。圖7-7在對話框中添加按鈕
(2)在按鈕上單擊鼠標(biāo)右鍵,彈出如圖7-8所示的快捷菜單。
(3)選擇選項,彈出如圖7-9所示的“PushButtonProperties”對話框。
在控件的對話框中含有許多屬性,如圖7-9所示(按鈕的屬性對話框)。對于大多數(shù)控件來說,這些屬性一般都有(一般屬性)、(控件的風(fēng)格)和(控件的擴展風(fēng)格)。其中和是用來設(shè)定控件的外觀和輔助功能的,不同的控件具有不同的風(fēng)格和擴展風(fēng)格,但控件的一般屬性是基本相同的,它通常有標(biāo)識符框、標(biāo)題框等內(nèi)容,各項具體說明如下。圖7-8按鈕的右鍵快捷菜單圖7-9“PushButtonProperties”對話框①:控件的標(biāo)識符。每種控件都有缺省的ID,例如按鈕控件為IDC_BUTTON1。
②:控件的標(biāo)題。大多數(shù)控件都有缺省的標(biāo)題,例如按鈕控件為Button1。
③:指定控件初始化時是否可見。
④:指定控件組中的第一個控件,如果該項未被選中,則此控件后的所有控件均被看成同一組。成組的目的是可以讓用戶用鍵盤方向鍵在同一組控件中進行切換。
⑤:若該項被選中,則為該控件建立一個上下文相關(guān)的幫助標(biāo)識符。
⑥:指定控件初始化時是否禁用。
⑦:若該項被選中,則用戶可使用Tab鍵來選控件。7.2.3編輯框
編輯框(EditBox)是一個用戶從鍵盤輸入和編輯文字的矩形窗口,用戶可以通過它進行文字、數(shù)字或口令的輸入,也可以使用它來編輯或修改簡單的文本文件。被選中后,編輯控制框中將顯示其文本(如果有)和一個閃爍的插入符,插入符用以表示插入點的位置。然后用戶就可以用鍵盤或鼠標(biāo)來輸入文本、移動插入點或者選擇將移動或刪除的文本。
編輯框通常用于編輯文本,不過也可使其成為只讀控件。編輯框能夠顯示多行數(shù)據(jù),并對文本換行使其符合控件的大小,并添加基本的格式設(shè)置。但是編輯框中顯示或輸入的文本只能采用一種格式。
Text屬性是編輯框最重要的屬性,因為要顯示的文本就包含在Text屬性中。默認(rèn)情況下,最多可在一個編輯框中輸入2048個字符。如果將MultiLine屬性設(shè)置為True,則最多可輸入32??KB的文本。Text屬性可以在設(shè)計窗體時使用屬性窗口設(shè)置,也可以在運行時用代碼設(shè)置或者通過用戶輸入來設(shè)置??梢栽谶\行時通過讀取Text屬性來獲得編輯框的當(dāng)前內(nèi)容。7.2.4單選框
單選框(RadioButton)通常成組出現(xiàn),允許用戶進行單項選擇時使用,選中其中一項,其余各項不能被同時選中。當(dāng)其被選中時,單選框中就標(biāo)上一個黑點,如圖7-10所示。圖7-10單選框示例當(dāng)單擊單選框時,其Checked屬性被設(shè)置為True,并調(diào)用Click事件處理程序。當(dāng)Checked屬性的值更改時,將觸發(fā)CheckedChanged事件。如果AutoCheck屬性被設(shè)置為True(默認(rèn)),那么當(dāng)選擇該單選框時,將自動清除該組中所有其他單選框。通常只有在使用驗證代碼以確保選定的單選框是允許的選項時,才將該屬性設(shè)置為False。用Text屬性可以設(shè)置控件內(nèi)顯示的文本,該屬性也可以包含訪問鍵快捷方式,即前面帶有“&”符號的字母,這樣用戶就可以通過同時按Alt鍵和訪問鍵來“單擊”控件。
如果將Appearance屬性設(shè)置為Button,將使單選框的外觀像按鈕一樣,即當(dāng)選定它時,它看起來已被按下。單選框也可以使用Image和ImageList屬性組合來顯示圖像。7.2.5復(fù)選框
復(fù)選框(CheckBox):允許用戶進行多項選擇時使用。當(dāng)其被選中時,復(fù)選框中就加上一個“×”標(biāo)記,如圖7-11所示。圖7-11復(fù)選框示例復(fù)選框和單選框的相似之處在于,它們都是供用戶選擇的選項。其不同之處在于,在單選框組中一次只能選擇一個單選框,而在一組復(fù)選框中則可以同時選擇任意多項。
復(fù)選框有兩個重要屬性Checked和CheckState。Checked屬性返回True或False。CheckState屬性返回CheckState.Checked或CheckState.Unchecked。如果ThreeState屬性被設(shè)置為True,CheckState屬性還可返回CheckState.Indeterminate,此時,復(fù)選框顯示為淺灰色狀態(tài),通常表示該選項下的多個子選項未完全選中。7.2.6組合框
列表框(ListBox)是一個放有用戶可以選擇的對象項列表的控制窗口。列表框中項的數(shù)目是可以靈活變化的,程序運行時可以往列表框中添加或刪除某些項。當(dāng)列表框中的數(shù)目較多時,列表框還提供滾動條來拓展顯示范圍。
組合框(ComboBox)兼有編輯框和列表框二者的優(yōu)點,在其下拉列表中有用戶待選的選項,但當(dāng)用戶想往其中輸入沒有的列表項時,組合框可以像編輯框似的直接輸入文本,為其待選項增加項目。按照組合框的主要風(fēng)格特征,可把組合框分為三類:簡單組合框、下拉式組合框、下拉式列表框。
簡單組合框和下拉式組合框都包含有列表框和編輯控件,但是簡單組合框中的列表框不需要下拉,是直接顯示出來的,而當(dāng)用戶單擊下拉式組合框中的下拉按鈕時,下拉的列表框才被顯示出來。下拉式列表框雖然具有下拉式的列表,卻沒有文字編輯功能。
組合框還有其他一些風(fēng)格,這些風(fēng)格可以在組合框的“屬性”對話框中設(shè)置,如圖7-12所示。圖7-12組合框的“屬性”對話框組合框的Style屬性說明如下:
(1):設(shè)置組合框的類型:Simple(簡單)、Dropdown(下拉)、DropList(下拉列表框)。
(2):自畫組合框,缺省為No。
(3):選中時,在自畫組合框的項目中含有字符串文本。
(4):選中時,組合框的項目按字母順序排列。
(5):選中時,在組合框中創(chuàng)建一個垂直滾動條。
(6):選中時,在創(chuàng)建組合框的過程中,系統(tǒng)會把用戶指定的尺寸完全作為組合框的尺寸,而不管是否會有項目在組合框的列表中不能完全顯示出來。
(7):選中時,實現(xiàn)對特定字符集的字符轉(zhuǎn)換。
(8):當(dāng)用戶在行尾鍵入一個字符時,文本自動向右滾動。
(9):選中時,即使組合框的列表項能全部顯示,垂直滾動條也會顯示,但此時呈現(xiàn)灰色狀態(tài),即禁用。
(10):選中時,鍵入在編輯控件的字符全部轉(zhuǎn)換成大寫形式。
(11):選中時,鍵入在編輯控件的字符全部轉(zhuǎn)換成小寫形式。7.2.7常用控件的應(yīng)用例程
【例7-2】
為例7-1新建的對話框增加控件,構(gòu)成一個學(xué)生個人信息登記的操作界面,包含學(xué)生姓名、學(xué)號、性別、學(xué)院及其他信息,點擊OK后在學(xué)生信息中顯示所有輸入的
信息。
其操作步驟如下:
(1)打開chap6_1工程文件。
(2)在項目區(qū)選中,展開文件夾,鼠標(biāo)左鍵雙擊,在右邊編輯區(qū)利用提供的控件工具欄布置對話框。
(3)在控件工具欄中選中“靜態(tài)文本”控件,回到ID_DIALOG1對話框。此時,鼠標(biāo)指針變?yōu)?,按下鼠?biāo)左鍵不放,然后拖動鼠標(biāo)到一定位置松開鼠標(biāo),則在對話框中出現(xiàn)控件。
提示:控件周圍出現(xiàn)的藍(lán)色邊框,用戶將鼠標(biāo)左鍵移動到藍(lán)點處,按下鼠標(biāo)左鍵,可以拖動鼠標(biāo)更改控件外觀大小。
(4)鼠標(biāo)右鍵單擊控件,在彈出的菜單中,選擇“屬性”項,則彈出“TextProperties”對話框,如圖7-13所示。圖7-13“TextProperties”對話框
(5)在標(biāo)題右邊的編輯框中輸入“學(xué)生個人信息登記”字符串,然后關(guān)閉對話框??梢钥吹綄υ捒蛑性摼庉嬁騼?nèi)容為,如圖7-14所示。
提示:一般情況下對靜態(tài)文本屬性的修改都只更改其標(biāo)題。
(6)使用同樣的方法,增加“姓名”、“學(xué)號”、“性別”、“學(xué)院”、“其他”和“學(xué)生信息”靜態(tài)文本。
(7)選中編輯框,同樣當(dāng)鼠標(biāo)指針為時,在對話框中按下鼠標(biāo)左鍵不放,然后拖動鼠標(biāo)到一定位置松開鼠標(biāo),則在對話框中出現(xiàn)控件。鼠標(biāo)右鍵選中
,在彈出菜單中選中“屬性”項,則彈出“EditProperties”對話框,如圖7-15所示。圖7-14文本屬性對話框?qū)傩孕薷膱D7-15“EditProperties”對話框General選項提示:編輯框?qū)傩詫υ捒蛴腥齻€選項,分別為“General”、“Styles”(見圖7-16)和“ExtendedStyles”。分別對編輯框的標(biāo)識、可見性、邊框風(fēng)格、文本風(fēng)格等進行設(shè)置。
“General”中規(guī)定了該控件的ID號,用戶可以手動更改或使用默認(rèn)的ID。在這里使用默認(rèn)的ID。圖7-16“EditProperties”對話框Style選項提示:“Style”中規(guī)定了該控件的常用風(fēng)格。下面介紹一些常用選項:
①Aligentext:規(guī)定了文本在編輯框中顯示的對齊方式,默認(rèn)為Left左對齊方式,在下拉列表中可選擇“Right”右對齊,“Center”居中方式。
②“Multiline”:允許多行輸入。
③“Verticalscroll”:當(dāng)文本行數(shù)超過當(dāng)前可顯示范圍,增加垂直滑動條。
④“Border”:規(guī)定了編輯框的邊界屬性,選中編輯框有邊界,不選,則沒有邊界。
⑤“Password”:當(dāng)用戶需要輸入口令時為掩蓋輸入文本而選擇顯示輸出為“*”時使用。⑥“Read-only”:默認(rèn)方式下,顯示的文本是可以編輯的,選中此項,文本為只讀屬性,不可更改。
(8)使用同樣的方法,建立另外兩個編輯框,ID分別為ID_EDIT2和ID_EDIT3。
提示:ID_EDIT3的“Style”選中“Multiline”、“Verticalscroll”。
(9)在控件工具欄中選擇,當(dāng)鼠標(biāo)指針為時,在對話框中按下鼠標(biāo)左鍵不放,然后拖動鼠標(biāo)到一定位置松開鼠標(biāo),則在對話框中出現(xiàn)控件。鼠標(biāo)右鍵點擊,在彈出菜單中選擇“屬性”,彈出“RadioButtonProperties”對話框,如圖7-17所示。圖7-17“RadioButtonProperties”對話框在“標(biāo)題”右邊的編輯框中輸入“男”,不更改ID。
(10)同樣的方法,增加另一個單選框控件,標(biāo)題為“女”。
(11)在控件工具欄中選擇,當(dāng)鼠標(biāo)指針為時,在對話框中按下鼠標(biāo)左鍵不放,然后拖動鼠標(biāo)到一定位置松開鼠標(biāo),則在對話框中出現(xiàn)控件。鼠標(biāo)右鍵點擊,在彈出菜單中選擇“屬性”,彈出“ComboBoxProperties”對話框,如圖7-18所示。圖7-18“ComboBoxProperties”對話框General選項提示:組合框?qū)傩詫υ捒蛴兴膫€選項,分別為“General”、“Data”、“Styles”和“ExtendedStyles”。分別對編輯框的標(biāo)識、數(shù)據(jù)、邊框風(fēng)格和進展風(fēng)格等進行設(shè)置。
“General”中規(guī)定了該控件的ID號,用戶可以手動更改或使用默認(rèn)的ID。在這里使用默認(rèn)的ID。
(12)選擇“Data”選項,如圖7-19所示,可以輸入組合框中的列表項,如圖7-20所示。圖7-19“ComboBoxProperties”對話框Data選項圖7-20在“Data”選項中增加列表項注意:為組合框增加列表項時,每增加一項后按下鍵盤“Ctrl+enter”鍵進行回車換行。當(dāng)輸入完畢后,按回車鍵直接退出。
(13)在控件工具欄中選擇復(fù)選框,當(dāng)鼠標(biāo)指針為時,在對話框中按下鼠標(biāo)左鍵不放,然后拖動鼠標(biāo)到一定位置松開鼠標(biāo),則在對話框中出現(xiàn)控件。鼠標(biāo)右鍵點擊,在彈出菜單中選擇“屬性”,彈出“CheckBoxProperties”對話框,如圖7-21所示。圖7-21“CheckBoxProperties”對話框在標(biāo)題中輸入“班干部”,不改變ID。
(14)用同樣的方法,再添加一復(fù)選框,標(biāo)題名為“學(xué)生會干部”。
(15)現(xiàn)在需要的控件都已添加完畢,整理這些控件,對布局進行布置,結(jié)果如圖7-22所示。
注意:ID_EDIT1與姓名對應(yīng);ID_EDIT2與學(xué)號對應(yīng);ID_EDIT3與學(xué)生信息對應(yīng)。
界面仍然不美觀,希望各控件的布置能橫平豎直,下面對控件位置進行調(diào)整。圖7-22布置控件布局
(16)按下鍵盤“Ctrl”鍵,配合鼠標(biāo)左鍵選中“姓名”、“學(xué)號”、“其他”和“學(xué)生信息”四個靜態(tài)文本框后,選中工具欄中
欄,在其下拉菜單中,選擇“Align”,在下級菜單中選擇“Left”。這樣這四個文本框的左邊已經(jīng)對齊,如圖7-23所示。
提示:在“Align”中有關(guān)于“Left”(左對齊)、“Right(右對齊)”、“Top(上對齊)”和“Bottom(下對齊)”的選項,選中表示控件外框邊界的對齊方式。
(17)采用提供的對齊方法,對界面進一步進行對齊方式的布置,如圖7-24所示。圖7-23左對齊靜態(tài)文本框圖7-24用戶自定義對話框界面7.2.8對話框的編程
前面已經(jīng)為對話框添加了控件,在程序運行中我們?nèi)匀粺o法看到對話框,無法對對話框界面進行操作。為了使對話框工作起來,用戶和對話框?qū)崿F(xiàn)交互功能,需要對對話框進行編程。
下面我們就為例7-1添加消息處理函數(shù),讓對話框工作起來。
【例7-3】
為例7-1在菜單欄中增加一個“顯示對話框”按鈕,下拉子菜單為“顯示”。選中“顯示”,彈出用戶自定義對話框。在對話框中進行相應(yīng)信息的輸入,選擇OK按鈕,在“信息”對應(yīng)的文本框中顯示輸入的學(xué)生信息。其操作步驟如下:
(1)打開工程文件“chap6_1”。
(2)在項目工作區(qū)中選擇選項卡,展開文件夾,鼠標(biāo)左鍵雙擊。
(3)在右邊編輯區(qū)中,手動添加新的主菜單欄按鈕“顯示對話框”,快捷鍵定義為“Alt+D”,如圖7-25所示。
(4)在其下拉菜單中建立一個名為“顯示”的子菜單項,其ID定義為“ID_SHOWDIALOG,”快捷鍵定義為“Alt+X”。
(5)回到項目工作區(qū),按下鍵盤“Ctrl+w”,彈出“MFCClassWizard”對話框,會自動彈出一個“AddingaClass”(增加類)對話框,選擇“Creatanewclass”選項,然后點擊“OK”按鈕,如圖7-26所示。圖7-25“MenuItemProperties”對話框圖7-26增加類對話框提示:之所以彈出“增加類”對話框,是因為用戶為程序增加了一個對話框,一個對話框就對應(yīng)一個派生于CDialog的新子類。
(6)在彈出的“NewClass”(新類)對話框中,在“Name”處輸入“CMydialog”,然后點擊“OK”按鈕,如圖7-27所示。
提示:①“Name”處輸入用戶新增對話框?qū)?yīng)的子類名稱。
②“Baseclasss:”新增類的基類,其下拉菜單提供了多種備選類。此處選CDialog。
③“DialogID:”新對話框類對應(yīng)的對話框ID號。
(7)在“MFCClassWizard“中的“Classname”列表中,出現(xiàn)了“CMydialog”類,如圖7-28所示。圖7-27“NewClass“對話框圖7-28“Classname”中增加的“Cmydialog”類
(8)在“Classname”中選擇“CChap6_1View”;在“ObjectIDs”中選擇“ID_SHOWDIALOG”;在“Messages”中選擇“COMMAND”。雙擊,在“Memberfunctions”中出現(xiàn)“OnShowdialogON_ID_SHOWDIALOG:COMMAND”成員函數(shù),如圖7-29所示。
(9)點擊按鈕。回到主窗口,在項目工作區(qū)中自動出現(xiàn)了成員函數(shù)。
(10)選擇,用鼠標(biāo)右鍵單擊,在彈出菜單中選擇,彈出“AddMemberVariable”對話框,如圖7-30所示。在處輸入“CMydialog”,在
處輸入mydialog,點擊“OK”按鈕。圖7-29添加OnShowdialog成員函數(shù)圖7-30添加CMydialog變量提示:這樣就建立了一個名為mydialog的CMydialog類保護型對象。
(11)在項目工作區(qū)中選擇,雙擊,光標(biāo)移動到該函數(shù)體起始位置,修改其內(nèi)容:
voidCChap6_1View::OnShowdialog()
{
//TODO:Addyourcommandhandlercodehere
mydialog.DoModal();//顯示對話框
}
(12)運行該程序,選擇“顯示”菜單項,結(jié)果如圖7-31所示。圖7-31選擇“顯示”運行結(jié)果到這里,已經(jīng)可以看到用戶定義的對話框了,下面增加代碼實現(xiàn)用戶與對話框的交互,這些操作都在對話框?qū)?yīng)的類CMydialog中完成。
(13)按下“Ctrl+W”鍵,打開“MFCClassWizard”對話框,選擇“MemberVariables”選項卡,在“Classname”中選擇“CMydialog”,在“ControlIDs”中出現(xiàn)了用戶對話框中控件的ID,如圖7-32所示。
(14)選中“IDC_CHECK1”,點擊“AddVariable”按鈕,彈出“AddMemberVariable”對話框,如圖7-33所示。圖7-32成員變量選項圖7-33“AddMemberVariable”對話框提示:
①“Membervaiablename”:用戶定義的該控件的變量名。
②“Category”:該變量對應(yīng)于控件的哪一分類。一個控件一般可以作為“value”(變量)和“Contrl”(控件)兩類。
③“Variabletype”:該變量的數(shù)據(jù)類型。
(15)為控件增加變量名,如表7-1所示。
(16)選擇“MessageMaps”,增加消息,如表7-2所示。
(17)在項目工作區(qū)的“CMydialog”中,已經(jīng)自動添加用戶定義的成員函數(shù)與成員變量,如圖7-34所示。
圖7-34用戶增加的成員變量和成員函數(shù)
(18)選擇、用鼠標(biāo)右鍵單擊,在彈出菜單中選擇“AddMemberVarialbe…”,增加成員變量,如表7-3所示。(19)修改CMydialog的構(gòu)造函數(shù)內(nèi)容,如下所示:
CMydialog::CMydialog(CWnd*pParent/*=NULL*/)
:CDialog(CMydialog::IDD,pParent)
{
//{{AFX_DATA_INIT(CMydialog)
m_ban=FALSE;
m_xuesheng=FALSE;
m_xueyuan=_T("");
m_num=_T("");
m_info=_T("");
m_name=_T("");
sex="";
other="";
//}}AFX_DATA_INIT
}(20)鼠標(biāo)雙擊“OnCheck1”成員函數(shù),修改其函數(shù)體,如下所示:
voidCMydialog::OnCheck1()
{
//TODO:Addyourcontrolnotificationhandlercodehere
other=other+"班干部";
}
(21)鼠標(biāo)雙擊“OnCheck2”成員函數(shù),修改其函數(shù)體,如下所示:
voidCMydialog::OnCheck2()
{
//TODO:Addyourcontrolnotificationhandlercodehere
other=other+"學(xué)生會干部";
}(22)鼠標(biāo)雙擊“OnRadio1”成員函數(shù),修改其函數(shù)體,如下所示:
voidCMydialog::OnRadio1()
{
//TODO:Addyourcontrolnotificationhandlercodehere
sex="男";
}
(23)鼠標(biāo)雙擊“OnRadio2”成員函數(shù),修改其函數(shù)體,如下所示:
voidCMydialog::OnRadio2()
{
//TODO:Addyourcontrolnotificationhandlercodehere
sex="女";
}(24)鼠標(biāo)雙擊“OnOK”成員函數(shù),修改其函數(shù)體,如下所示:
voidCMydialog::OnOK()
{
//TODO:Addextravalidationhere
UpdateData(TRUE);
m_info="姓名"+m_name+"\r\n"+"學(xué)號"+m_num+"\r\n"+"性別"+sex+"\r\n"+"學(xué)院"+"\r\n"+m_xueyuan+"其他"+other+"\r\n";
UpdateData(FALSE);
// CDialog::OnOK();
}
注意:CDialog::OnOK();前用戶添加了一個注釋符“//”,使得該函數(shù)失效。如果不使其變?yōu)樽⑨?,按下OK后該對話框會自動關(guān)閉。
(25)運行程序,選擇“顯示”菜單項,在對話框中輸入相應(yīng)信息,點擊“OK”按鈕,結(jié)果如圖7-35所示。圖7-35例7-2運行結(jié)果本章學(xué)習(xí)了對話框及常用控件。讀者重點掌握常用控件的繪制、屬性以及對話框的編程方法。在實際編程中,除了正確設(shè)計程序語言外,還應(yīng)注意合理利用系統(tǒng)提供的屬性選項配合使用,使得界面的設(shè)計方便、快捷、美觀。以下是一具體實例,在對話框模式下實現(xiàn)一個簡單的計算器,能進行加、減、乘、除運算。
其操作步驟如下:
(1)打開VC++6.0,選擇“文件/新建”命令,彈出“新建”對話框,選擇“工程”選項,選擇“MFCAppWizard(exe)”,在工程處輸入工程名“l(fā)ianxi7_1”,如圖7-36所示。圖7-36“新建”對話框
(2)點擊“確定”按鈕,彈出“MFCAppWizrd–Step1”對話框中,選擇“基本對話”應(yīng)用程序類型,點擊“完成”按鈕,如圖7-37所示。
(3)為對話框添加3個靜態(tài)文本,標(biāo)題分別為“操作數(shù)1”,“操作數(shù)2”,“結(jié)果”。
(4)為對話框添加3個編輯框,在屬性中更改ID為用戶自定義ID,如表7-4所示。圖7-37選擇“基本對話框”應(yīng)用程序類型
(5)為對話框添加4個單選框,在屬性中更改ID為用戶自定義ID并設(shè)置標(biāo)題,如表7-5所示。
(6)為對話框添加1個按鈕,在屬性中更改標(biāo)題為“=”,ID為“IDC_BUTTON1”。
(7)布置用戶界面,如圖7-38所示。
(8)按下“Ctrl+W”鍵,彈出“MFCClassWizard”對話框,選中“MemberVarialbes”選項,如圖7-39所示。
(9)選擇“IDC_NUM1”,點擊右邊“AddVariable”按鈕,彈出“AddMemberVariable”對話框,在其中定義成員變量名為“m_num1”,“Category”為“Value”,“VariableType”下拉列表中選擇“float”,如圖7-40所示。圖7-38lianxi7_1界面布置圖7-39lianxi7_1的成員變量圖7-40為“IDC_NUM1”添加成員變量
(10)點擊“OK”按鈕。
(11)使用同樣的方法,為“IDC_NUM2”添加變量,如圖7-41所示。
(12)為“IDC_RESULT”添加變量,如圖7-42所示。
(13)選中“MessageMaps”選項,在“ObjectIDs”中選中“IDC_BUTTON1”,在“Messages”中用鼠標(biāo)左鍵雙擊“BN_CLICKED”,則彈出“AddMemberFunction”對話框,點擊“OK”按鈕確認(rèn),如圖7-43所示。圖7-41為“IDC_NUM2”添加成
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型農(nóng)業(yè)機械推廣與應(yīng)用合作協(xié)議4篇
- 2025年拆遷還建住宅產(chǎn)權(quán)變更協(xié)議范本4篇
- 二零二四臺媒披露大S汪小菲離婚協(xié)議財產(chǎn)分割與子女撫養(yǎng)權(quán)爭奪戰(zhàn)3篇
- 元素周期表解析
- 2025年度企業(yè)搬遷拆遷工程承包合同書(產(chǎn)業(yè)升級支持協(xié)議)3篇
- 2025年度智能化廠房租賃及運營管理合同4篇
- 二零二五版城區(qū)交通隔離護欄定制采購合同3篇
- 個人健身教練2024年度勞動協(xié)議樣本版A版
- 2025年度大數(shù)據(jù)分析公司100%股權(quán)轉(zhuǎn)讓及數(shù)據(jù)共享協(xié)議3篇
- 2025年度水上樂園場管理辦公室安全管理及運營合同4篇
- 河南省鄭州外國語高中-【高二】【上期中】【把握現(xiàn)在 蓄力高三】家長會【課件】
- 天津市武清區(qū)2024-2025學(xué)年八年級(上)期末物理試卷(含解析)
- 《徐霞客傳正版》課件
- 江西硅博化工有限公司年產(chǎn)5000噸硅樹脂項目環(huán)境影響評價
- 2025年中煤電力有限公司招聘筆試參考題庫含答案解析
- 企業(yè)內(nèi)部控制與財務(wù)風(fēng)險防范
- 高端民用航空復(fù)材智能制造交付中心項目環(huán)評資料環(huán)境影響
- 建設(shè)項目施工現(xiàn)場春節(jié)放假期間的安全管理方案
- 量子醫(yī)學(xué)成像學(xué)行業(yè)研究報告
- 胃潴留護理查房
- 污水處理廠運營方案計劃
評論
0/150
提交評論