第8章可視化編程_第1頁(yè)
第8章可視化編程_第2頁(yè)
第8章可視化編程_第3頁(yè)
第8章可視化編程_第4頁(yè)
第8章可視化編程_第5頁(yè)
已閱讀5頁(yè),還剩67頁(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)介

第8章可視化編程第8章可視化編程教學(xué)提示:隨著計(jì)算機(jī)軟件工程技術(shù)的迅速發(fā)展,可視化編程技術(shù)已經(jīng)成為當(dāng)今軟件開(kāi)發(fā)的重要工具和手段,尤其是VisualC++、Delphi、VisualBasic等開(kāi)發(fā)工具的出現(xiàn),大大推動(dòng)了可視化編程技術(shù)的發(fā)展和應(yīng)用。作為理工科專業(yè)的大學(xué)生在學(xué)習(xí)了程序設(shè)計(jì)課程后,還應(yīng)掌握一些開(kāi)發(fā)工具,同時(shí)也能提高開(kāi)發(fā)應(yīng)用系統(tǒng)的基本能力。教學(xué)目標(biāo):通過(guò)可視化編程的學(xué)習(xí),掌握VisualC++等開(kāi)發(fā)工具的基本原理、開(kāi)發(fā)環(huán)境、文檔視圖結(jié)構(gòu)、單文檔與多文檔程序、對(duì)話框和控件,提高實(shí)踐操作和獨(dú)立編程的能力。1/13/202328.1文檔與視圖的概念8.1.1文檔視圖結(jié)構(gòu)8.1.2單文檔(SDI)應(yīng)用程序8.1.3多文檔(MDI)應(yīng)用程序1/13/202338.1.1文檔視圖結(jié)構(gòu)在文檔視圖結(jié)構(gòu)里,文檔是一個(gè)應(yīng)用程序數(shù)據(jù)基本元素的集合,它構(gòu)成應(yīng)用程序所使用的數(shù)據(jù)單元;另外它還提供了管理和維護(hù)數(shù)據(jù)的手段。文檔是一種數(shù)據(jù)源,數(shù)據(jù)源有很多種,最常見(jiàn)的是磁盤(pán)文件。視圖是數(shù)據(jù)的用戶窗口,為用戶提供文檔的可視的數(shù)據(jù)顯示,它把文檔的部分或全部?jī)?nèi)容在窗口中顯示出來(lái)。視圖還給用戶提供了一個(gè)與文檔中的數(shù)據(jù)交互的界面,它把用戶的輸入轉(zhuǎn)化為對(duì)文檔中數(shù)據(jù)的操作。1/13/202348.1.1文檔視圖結(jié)構(gòu)文檔視圖結(jié)構(gòu)帶來(lái)的好處主要有:將數(shù)據(jù)操作和數(shù)據(jù)顯示、用戶界面分離開(kāi)提供標(biāo)準(zhǔn)的操作界面支持打印預(yù)覽和電子郵件發(fā)送功能1/13/202358.1.2單文檔(SDI)應(yīng)用程序在單文檔界面程序中,用戶在同一時(shí)刻只能操作一個(gè)文檔。如Windows中的記事本。單文檔應(yīng)用程序一般都提供一個(gè)File菜單,在該菜單下有一組命令:新建文檔(New)打開(kāi)已有文檔(Open)保存(Save)換名存盤(pán)(Saveas)等。1/13/202368.1.2單文檔(SDI)應(yīng)用程序使用VisualC++集成開(kāi)發(fā)環(huán)境的AppWizard就可以創(chuàng)建單文檔的應(yīng)用程序框架:在New對(duì)話框的ProjectName編輯框中輸入項(xiàng)目名為Editor在AppWizard的第一步中選擇Singledocument(單文檔)AppWizard第二和第三步選項(xiàng)使用默認(rèn)值A(chǔ)ppWizard后面的幾頁(yè)對(duì)話框都使用默認(rèn)值。最后可得到的結(jié)果:1/13/202378.1.3多文檔(MDI)應(yīng)用程序多文檔界面(MultipleDocumentInterface,MDI)是在一個(gè)應(yīng)用程序中能夠同時(shí)處理兩個(gè)或者更多個(gè)窗體的界面形式。一個(gè)多文檔界面應(yīng)用程序也能操作文檔,但它允許同時(shí)操作多個(gè)文檔。MicrosoftExcel就是這樣的例子??梢源蜷_(kāi)多個(gè)文件,可以通過(guò)切換活動(dòng)窗口激活相應(yīng)的文檔進(jìn)行編輯。多文檔應(yīng)用程序也提供一個(gè)File菜單,用于新建、打開(kāi)、保存文檔。與單文檔應(yīng)用程序不同的是,它往往還提供一個(gè)Close(關(guān)閉)菜單項(xiàng),用于關(guān)閉當(dāng)前打開(kāi)的文檔。多文檔應(yīng)用程序還提供一個(gè)窗口菜單,管理所有打開(kāi)的子窗口,包括對(duì)子窗口的新建、關(guān)閉、層疊、平鋪等。關(guān)閉一個(gè)窗口時(shí),窗口內(nèi)的文檔也被自動(dòng)關(guān)閉。1/13/202388.1.3多文檔(MDI)應(yīng)用程序VisualC++提供了一整套設(shè)計(jì)MDI應(yīng)用程序的組件,可以很容易、很快速地開(kāi)發(fā)一個(gè)MDI的應(yīng)用程序。在File菜單中選擇New菜單項(xiàng),在彈出New對(duì)話框的Projects選項(xiàng)卡選中列表中的選項(xiàng)MFCAppWizard(exe),并在Projectname(工程名)的編輯框內(nèi)輸入工程名稱:MdiForm,單擊OK按鈕后,進(jìn)行AppWizard選項(xiàng)的各個(gè)步驟。第一步,接收系統(tǒng)的默認(rèn)值,即選中Multipledocuments單選按鈕。第二步,接收系統(tǒng)默認(rèn)設(shè)置。第三步,去掉復(fù)選框ActiveXControls,其他設(shè)置接收系統(tǒng)默認(rèn)設(shè)置。第四步,去掉復(fù)選框Printingandprintpreview,其他接收系統(tǒng)默認(rèn)設(shè)置。第五步,接收系統(tǒng)默認(rèn)設(shè)置。第六步,接收系統(tǒng)默認(rèn)設(shè)置。單擊OK按鈕后,結(jié)束AppWizard的設(shè)置。1/13/202398.2對(duì)話框和控件8.2.1對(duì)話框8.2.2常用控件8.2.3控件使用舉例1/13/2023108.2.1對(duì)話框?qū)υ捒虻幕靖拍顚?duì)話框(Dialog)實(shí)際上是一個(gè)窗口。在MFC中,對(duì)話框的功能被封裝在了CDialog類中,CDialog類是CWnd類的派生類。對(duì)話框分為:模態(tài)對(duì)話框:只能與當(dāng)前對(duì)話框進(jìn)行交互非模態(tài)對(duì)話框:可以與其他對(duì)話框交互從MFC編程的角度來(lái)看,一個(gè)對(duì)話框由兩部分組成:對(duì)話框模板資源:用于指定對(duì)話框的控件及其分布。Windows根據(jù)對(duì)話框模板來(lái)創(chuàng)建并顯示對(duì)話框。對(duì)話框類:用來(lái)實(shí)現(xiàn)對(duì)話框的功能。由于對(duì)話框行使的功能各不相同,因此一般需要從CDialog類派生一個(gè)新類,以完成特定的功能。1/13/2023118.2.1對(duì)話框創(chuàng)建對(duì)話框應(yīng)用程序啟動(dòng)VisualC++,在VisualC++中,New命令,彈出New對(duì)話框來(lái)新建一個(gè)工程項(xiàng)目。在Projectname編輯框中輸入要?jiǎng)?chuàng)建的項(xiàng)目名稱:Mydialog。單擊OK按鈕后,進(jìn)行AppWizard的各個(gè)步驟。進(jìn)入MFCAppWizard-Step1對(duì)話框,選中Dialogbased單選按鈕,在語(yǔ)言支持資源中選擇Chinese(PRC)(APPWZCHS.DLL)彈出MFCAppWizard-Step2of4對(duì)話框,默認(rèn)的設(shè)置。彈出MFCAppWizard-Step3of4對(duì)話框,選用默認(rèn)設(shè)置。彈出MFCAppWizard-Step3of4對(duì)話框,不需要做任何修改,單擊Finish按鈕,完成項(xiàng)目創(chuàng)建向?qū)У挠嘘P(guān)設(shè)置。在指定的目錄下生成應(yīng)用程序的框架所必須的全部文件。編輯和運(yùn)行對(duì)話框應(yīng)用程序在對(duì)話框中,可以進(jìn)行可視化的設(shè)計(jì)、布局安排各種控件、定義編輯對(duì)話框各種資源。1/13/2023128.2.2常用控件對(duì)話框?qū)嶋H上只提供了一個(gè)窗口,用戶與對(duì)話框的交互還要利用對(duì)話框中的控件進(jìn)行??丶δ軐?duì)應(yīng)控件類StaticText(靜態(tài)正文)顯示正文,一般不能接受輸入信息CStaticPicture(圖片)顯式位圖、圖標(biāo)、方框和圖元文件,一般不能接受輸入信息CStaticEditBox(編輯框)輸入并編輯正文,支持單行和多行編輯CEditPushbutton(命令按鈕)響應(yīng)用戶的輸入,觸發(fā)相應(yīng)的事件CButtonCheckBox(檢查框)用作選擇標(biāo)記,可以有選中和不選中兩種狀態(tài)CButtonRadioButton

(單選按鈕)用來(lái)從兩個(gè)或多個(gè)選項(xiàng)中選中一項(xiàng)CButtonGroupBox(組框)顯示正文和方框,主要用來(lái)將相關(guān)的一些控件聚成一組CButtonListBox(列表框)顯示一個(gè)列表,用戶可以從該列表中選擇一項(xiàng)或多項(xiàng)CListBoxComboBox(組合框)是一個(gè)編輯框和一個(gè)列表框的組合,分為簡(jiǎn)易式、下拉式和下拉列表式CComboBoxScrollBar(滾動(dòng)條)主要用來(lái)從一個(gè)預(yù)定義范圍值中迅速而有效地選取一個(gè)整數(shù)值CScrollBar1/13/2023138.2.2常用控件控件在Control工具欄上都有對(duì)應(yīng)的工具按鈕。可以利用這些工具按鈕在對(duì)話框中進(jìn)行可視化設(shè)置控件。1/13/202314對(duì)話框工具條1/13/202315對(duì)控件的操作和使用一般按以下步驟進(jìn)行在對(duì)話框資源中添加控件。通過(guò)屬性對(duì)話框可以對(duì)控件的風(fēng)格進(jìn)行設(shè)置。通過(guò)定義與控件相關(guān)的控件類的對(duì)象或相應(yīng)的數(shù)值變量。通過(guò)定義控件的消息響應(yīng)函數(shù),生成對(duì)話框類的成員函數(shù)。在消息響應(yīng)函數(shù)中添加適當(dāng)?shù)拇a。1/13/2023168.2.2常用控件1靜態(tài)控件(CStatic)用來(lái)顯示一個(gè)字符串、框、矩形、圖標(biāo)及位圖等,可用于顯示提示信息和其他控件標(biāo)題。靜態(tài)控件有靜態(tài)文本、組框和圖片等,一般不接收用戶輸入,也不產(chǎn)生消息。在控件工具窗口中選擇Aa,在編輯對(duì)話框窗口中單擊,創(chuàng)建一個(gè)靜態(tài)文本,在此靜態(tài)文本上單擊鼠標(biāo)右鍵,選擇Properties(屬性)選項(xiàng),如圖8.20所示。彈出屬性對(duì)話框,對(duì)此文本進(jìn)行設(shè)置。修改Caption編輯框內(nèi)的內(nèi)容:姓名。1/13/2023172按鈕類控件按鈕類控件是窗口類名被系統(tǒng)預(yù)定義為BUTTON的一類控件,該類控件用于響應(yīng)用戶的鼠標(biāo)按鍵操作,常見(jiàn)的按鈕有三種:按鍵按鈕PushButton:可以產(chǎn)生某個(gè)動(dòng)作,執(zhí)行某個(gè)命令,如確認(rèn)或取消等命令。單選按鈕RadioBox:用來(lái)從多項(xiàng)中選擇一項(xiàng),一般都是成組使用。復(fù)選按鈕CheckBox:用作選擇標(biāo)記,有選中、非選中和不確定等狀態(tài)。1/13/2023183編輯框控件文本編輯框控件是一個(gè)讓用戶從鍵盤(pán)輸入和編輯文本的矩形窗口,用戶可以通過(guò)它進(jìn)行單行或多行的文本輸入,也可以進(jìn)行數(shù)值、時(shí)間和日期數(shù)據(jù)的輸入。當(dāng)編輯框被激活時(shí),具有輸入焦點(diǎn),出現(xiàn)一個(gè)閃動(dòng)的插入符。用對(duì)話框編輯器可以方便地設(shè)置編輯控件的屬性和風(fēng)格。1/13/202319舉一個(gè)簡(jiǎn)單的例子說(shuō)明編輯框的使用方法。用MFCAppWizard(exe)創(chuàng)建一個(gè)項(xiàng)目名為MyDialog的基于對(duì)話框的應(yīng)用程序。P221Updatedata(TRUE)==將控件的值賦值給成員變量;(默認(rèn))Updatedata(FALSE)==將成員變量的值賦值給控件1/13/202320voidCDdDlg::OnExit(){OnOK(); }voidCDdDlg::OnCalculate(){ UpdateData(); floatarea=(float)2*3.14*m_Radius*m_Radius; m_Area.Format("%8.2f",area); UpdateData(FALSE);

}1/13/202321關(guān)于編輯框的賦值和取值

向編輯框中賦值和取值時(shí):1、建一個(gè)控制型的變量,如m_edit1,用CWnd的SetWindowText()和GetWindowText()來(lái)賦值和取值。m_edit1.SetWindowText("Hello");

或者GetDlgItem(IDC_EDIT1)->SetWindowText(str);2、建立一個(gè)控制型的變量,如m_edit1,用SetDlgItemText()和GetDlgItemText()來(lái)賦值和取值CStringStr="Hello":m_edit1.SetDlgItemText(IDC_EDIT1,str);2、直接建一個(gè)

數(shù)值形的變量

如m_strEdit;

UpdateData()來(lái)控制得到變量,還是更新變量。//取值

UpdateData(TRUE);

CString

buf

=

m_Edit1;

//賦值

m_Edit1="ok!";

UpdateData(FALSE);1/13/2023224列表框列表框是一個(gè)可以列有多個(gè)項(xiàng)目讓用戶選擇的列表控件,可往列表框中添加或刪除某些項(xiàng),并可自動(dòng)提供滾動(dòng)條讓用戶瀏覽列表框中數(shù)目較多的項(xiàng)目。ListBox窗口用來(lái)列出一系列可供用戶從中選擇的項(xiàng),這些項(xiàng)一般以字符串的形式給出。MFC類ClistBox封裝了標(biāo)準(zhǔn)列表框控件,其成員函數(shù)提供了對(duì)標(biāo)準(zhǔn)列表框的絕大多數(shù)操作,下表列出了一些重要的成員函數(shù)。1/13/2023231/13/2023245組合框組合框(ComboBox)的功能是將列表框與編輯框控件結(jié)合在一起,完成一些較為復(fù)雜的輸入功能。組合框有:簡(jiǎn)單組合框下拉組合框下拉式列表框1/13/2023251/13/2023266滾動(dòng)條控件

滾動(dòng)條分為水平滾動(dòng)條和垂直滾動(dòng)條兩種,通常使用滾動(dòng)條來(lái)進(jìn)行定位之類的操作。1/13/2023271滾動(dòng)條控件樣式

Top/Left表示將滾動(dòng)條的左上邊與由函數(shù)CreateWindowEx的參數(shù)定義的矩形的左上邊對(duì)齊;Button/Right則表示與右下邊對(duì)齊;該屬性的默認(rèn)值為None,即不進(jìn)行任何對(duì)齊操作1/13/2023282CScrollBar類

1/13/202329.3滾動(dòng)條控件消息

當(dāng)對(duì)滾動(dòng)條操作后,所在的對(duì)話框會(huì)接受到WM_HSCOLL消息和WM_VSCOLL消息。在這兩個(gè)消息的響應(yīng)函數(shù)中可以判斷是哪一個(gè)滾動(dòng)條發(fā)生了變化,然后進(jìn)行相應(yīng)的操作。 CWnd類中定義了處理該消息的成員函數(shù)OnHScoll和OnVScoll。1/13/202330OnHScoll成員函數(shù)的原型: afx_msgvoidOnHScoll( UINTnSBCode,UINTnPos, CScrollBar*pScrollBar );1/13/2023318.2.3控件使用舉例P225設(shè)計(jì)這個(gè)應(yīng)用程序包括兩個(gè)對(duì)話框:一個(gè)主對(duì)話框(學(xué)生信息管理),用來(lái)打開(kāi)另一個(gè)對(duì)話框及查詢學(xué)生信息;另一個(gè)對(duì)話框(輸入學(xué)生信息),用來(lái)輸入學(xué)生的信息,它是通過(guò)主對(duì)話框的按鈕來(lái)打開(kāi)運(yùn)行的。1/13/202332常用控件應(yīng)用實(shí)例

本節(jié)例子主要用來(lái)說(shuō)明對(duì)話框和控件的使用。例子的實(shí)現(xiàn)功能是在程序主界面出現(xiàn)一個(gè)用戶調(diào)查表圖所示:1/13/202333操作步驟(創(chuàng)建工程):步驟1.在VC++集成開(kāi)發(fā)環(huán)境中,通過(guò)菜單File|New,彈出New對(duì)話框;步驟2.在Projects標(biāo)簽中選擇MFCAppWizar(exe),在Projectname中輸入“Eg7_1”,Location讀者可以自己選擇;步驟3.按下OK按鈕,在彈出的MFCAppWizardStep-1對(duì)話框中選擇程序框架為單文檔框架,即選中SingleDocument;步驟4.按下OK按鈕,在彈出的NewProjectInformation對(duì)話框中按下OK按鈕后等待創(chuàng)建完相應(yīng)的工程。1/13/2023341創(chuàng)建對(duì)話框資源

在工作區(qū)中選中ResourseView標(biāo)簽展開(kāi)Eg7_1Resourse|Dialog條目,可以察看當(dāng)前工程中的對(duì)話框資源;選擇Dialog條目,單擊鼠標(biāo)右鍵,彈出活動(dòng)菜單,選擇菜單InsertDialog命令;將鼠標(biāo)移動(dòng)到對(duì)話框資源上,單擊鼠標(biāo)右鍵,在彈出的菜單中選擇Properties菜單命令,將對(duì)話框的標(biāo)題設(shè)置為“用戶調(diào)查表”標(biāo)識(shí)號(hào)不變。1/13/202335創(chuàng)建對(duì)話框資源(續(xù))刪除對(duì)話框資源本來(lái)就有的靜態(tài)控件,利用鼠標(biāo)將按鈕OK和CANCEL移動(dòng)到對(duì)話框的底部,將按鈕的標(biāo)題分別改為確定,取消。在工具欄中的靜態(tài)控件上單擊一下鼠標(biāo)左鍵,然后在對(duì)話框資源中按下鼠標(biāo)左鍵拖動(dòng),出現(xiàn)一個(gè)矩形框,松開(kāi)鼠標(biāo)左鍵,則在對(duì)話框資源中出現(xiàn)一個(gè)靜態(tài)控件,將該靜態(tài)控件的標(biāo)題改為“姓名”其標(biāo)識(shí)號(hào)改為IDC_STATIC_NAME。1/13/202336創(chuàng)建對(duì)話框資源(續(xù))按照上面的方法在對(duì)話框資源上加入其它的控件,它們的類型、標(biāo)題和標(biāo)識(shí)號(hào)如下:1/13/202337創(chuàng)建對(duì)話框資源(續(xù))1/13/2023382生成對(duì)話框類

資源創(chuàng)建完畢以后,還需要?jiǎng)?chuàng)建一個(gè)與對(duì)話框資源相關(guān)聯(lián)的類,這個(gè)類需要從對(duì)話框類派生,然后定義一個(gè)派生類的對(duì)象,通過(guò)派生類的對(duì)象使對(duì)話框的功能得以實(shí)現(xiàn)。1/13/202339生成對(duì)話框類的操作步驟:在對(duì)話框資源上單擊右鍵,在彈出的菜單中選擇ClassWiizard,在MFCClassWIizard對(duì)話框彈出以后緊接著彈出AddingClass。在打開(kāi)對(duì)話框的過(guò)程中,如果系統(tǒng)監(jiān)測(cè)到有新建的對(duì)話框資源,菜單資源等,并且該資源沒(méi)有與之相關(guān)聯(lián)的類,就會(huì)彈出對(duì)話框,詢問(wèn)是否創(chuàng)建新的類。1/13/202340生成對(duì)話框類的操作步驟(續(xù)):在AddingClass對(duì)話框中確認(rèn)默認(rèn)選擇Createanewclass,單擊按鈕彈出NewClass對(duì)話框,在編輯框中輸入新建類的名稱CEg7-1Dialog,其他設(shè)置取默認(rèn)值。單擊OK按鈕后顯示出MFCClassWIizard對(duì)話框。1/13/2023413為控件建立相關(guān)聯(lián)的成員變量

在MFCClassWiizard對(duì)話框中默認(rèn)的Projects和Classname項(xiàng)為Eg7-1和CEg7-1Dialog。選中MemberVariables標(biāo)簽中的ControlIds項(xiàng)中的IDC_EDIT_NAME條目,單擊AddVariables按鈕,將彈出AddVariables對(duì)話框。在AddVariables對(duì)話框中添加成員變量m_Name,與編輯控件IDC_EDIT_NAME相關(guān)聯(lián),類型為CString,catogory為Value。單擊OK按鈕,添加變量完成。1/13/202342為控件建立相關(guān)聯(lián)的成員變量(續(xù))

AddVariables對(duì)話框:1/13/202343為控件建立相關(guān)聯(lián)的成員變量(續(xù)) 按照上述方法為其它控件添加相關(guān)聯(lián)的變量,如表所示:1/13/2023444成員變量的初始化

成員變量的初始化需要重載對(duì)話框類的OnInitDialog()函數(shù)。OnInitDialog是一個(gè)虛函數(shù),它在對(duì)話框顯示之前被調(diào)用,用戶可以通過(guò)重載該函數(shù)對(duì)對(duì)話框中的各種控件進(jìn)行初始化。 操作如下: 打開(kāi)MFCClassWizzard,選中標(biāo)簽MemberMap標(biāo)簽中的ControlIDs項(xiàng)中的IDC_COMBO1條目,在Messages里面選擇WM_INITDIALOG,單擊AddFuction按鈕,然后單擊EditCode按鈕,進(jìn)入源程序,編輯OnInitDialog()函數(shù)。1/13/202345成員變量的初始化(續(xù))

增加以后的代碼如下:BOOLCInvest::OnInitDialog(){ CDialog::OnInitDialog(); //TODO:Addextrainitializationhere

m_Province.AddString("湖南"); m_Province.AddString("河南"); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}1/13/2023465建立消息映射與響應(yīng)函數(shù)

需要在用戶選擇了省份以后更新有關(guān)城市的信息,這就需要在組合框中增加消息響應(yīng)函數(shù),功能是當(dāng)用戶打開(kāi)第二個(gè)組合框的下拉式列表框的時(shí)候及時(shí)更新相關(guān)省份的城市信息。 操作步驟: 打開(kāi)MFCClassWizard,選中標(biāo)簽MemberMap標(biāo)簽中的ControlIDs項(xiàng)中的IDC_COMBO2條目,在Messages里面選擇CBN_DROPDOWN,單擊“AddFuction”按鈕,接受系統(tǒng)默認(rèn)的函數(shù)名,然后單擊“EditCode”按鈕,進(jìn)入源程序,編輯函數(shù)如下:1/13/202347響應(yīng)函數(shù):voidCEg7_1Dlg::OnDropdownCombo2(){ //TODO:Addyourcontrolnotificationhandlercodehere

CStringm_1; m_Province.GetWindowText(m_1); if(m_1=="河南") { m_City.ResetContent(); m_City.AddString("鄭州"); m_City.AddString("洛陽(yáng)"); } if(m_1=="湖南") { m_City.ResetContent(); m_City.AddString("長(zhǎng)沙"); m_City.AddString("岳陽(yáng)"); } }1/13/2023486函數(shù)建立與調(diào)用

在Workspace工作區(qū)打開(kāi)CLassView,選中要加入函數(shù)的類CEg7_1Dlg,點(diǎn)擊鼠標(biāo)右鍵,在彈出的對(duì)話框中選擇“AddMemberFuntion”。 在FuntionType(函數(shù)類型)中填入CString,表示函數(shù)類型是字符串對(duì)象;在FuntionDeclareation(函數(shù)聲明)中填入GetRadio。該函數(shù)用來(lái)獲得單選按鈕的信息。1/13/202349函數(shù)建立與調(diào)用(續(xù))然后在CEg7_1Dlg.cpp文件中找到該函數(shù),添加函數(shù)代碼如下:CStringCEg7_1Dlg::GetRadio(){CStringRadiotext;UINTm_6=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO2); if(m_6==IDC_RADIO1) {Radiotext="男"; } else { Radiotext="女"; } return(Radiotext);}1/13/202350函數(shù)建立與調(diào)用(續(xù))說(shuō)明:CWnd的成員函數(shù):GetCheckedRadioButton()返回指定組中的第一個(gè)所選中的單選鈕的ID,如果沒(méi)有按鈕選中則返回0。 該成員函數(shù)的原型:intGetCheckedRadioButton(intnIDFirstButton,intnIDLastButton);其中,第一個(gè)參數(shù)是nIDFirstButton同一組中的第一個(gè)單選按鈕的ID,nIDLastButton是同一組中最后一個(gè)單選按鈕的ID。1/13/202351建立第二個(gè)成員函數(shù):同樣為CEg7_1Dlg類加入另一個(gè)成員函數(shù)GetCheck()以獲得復(fù)選框的信息。在FuntionType(函數(shù)類型)中填入CString,表示函數(shù)類型是字符串對(duì)象;在FuntionDeclareation(函數(shù)聲明)中填入GetCheck。在CEg7_1Dlg.cpp文件中找到該函數(shù),添加函數(shù)代碼如下:1/13/202352函數(shù)代碼:CStringCEg7_1Dlg::GetCheck(){int m=0; CStringstr,Checktext;for(inti=IDC_CHECK1;i<IDC_CHECK6+1;i++){m=((CButton*)GetDlgItem(i))->GetCheck(); if(m==1) { CWnd::GetDlgItemText(i,str); str+=";"; Checktext+=str; } } return(Checktext);}1/13/202353函數(shù)代碼分析:說(shuō)明:CButton類的成員函數(shù)GetDlgItem()得到指向各個(gè)復(fù)選框控件的指針;CButton類的成員函數(shù)GetCheck()用來(lái)返回復(fù)選框是否被選中,選中則返回1;CWnd::GetDlgItemText()用來(lái)獲得所選中的復(fù)選框的標(biāo)題1/13/202354重載OnOK()函數(shù):該例將在OnOK()函數(shù)中調(diào)用這兩個(gè)成員函數(shù)。打開(kāi)對(duì)話框資源,雙擊“確定”按鈕,接受系統(tǒng)默認(rèn)的函數(shù)名,重載OnOK()函數(shù):voidCMy21Dlg::OnOK(){ //TODO:AddextravalidationhereCStringm_1,m_2,m_3,str;m_3=GetRadio();//調(diào)用成員函數(shù)以得到單選按鈕的信息str=GetCheck();//調(diào)用成員函數(shù)以得到復(fù)選框中的信息}1/13/202355.7重載其他函數(shù)

重載以后的OnOK()函數(shù)源代碼如下:voidCMy21Dlg::OnOK(){ //TODO:AddextravalidationhereUpdateData(TRUE);//將對(duì)話框控件中的內(nèi)容傳給其成員變量 CStringm_1,m_2,m_3,str; m_3=GetRadio(); str=GetCheck(); m_Province.GetWindowText(m_1); m_City.GetWindowText(m_2); SetDlgItemText(IDC_STATIC_NAME,"");1/13/202356重載以后的OnOK()函數(shù)源代碼(續(xù))

SetDlgItemText(IDC_STATIC_EMAIL,""); SetDlgItemText(IDC_STATIC_EDIT,""); SetDlgItemText(IDC_STATIC_SEX,""); SetDlgItemText(IDC_STATIC_HOBBY,""); SetDlgItemText(IDC_STATIC_PROVINCE,""); SetDlgItemText(IDC_STATIC_CITY,""); m_Display.SetWindowText(m_Name+","+m_3+","+m_1+m_2+"人也。\n您的興趣有:" +str+"\n"+"您的地址:"+m_Email+"\n"+"您要說(shuō)的話:"+m_Edit); m_Display.ShowWindow(TRUE); m_City.ShowWindow(FALSE);m_Province.ShowWindow(FALSE); ((CEdit*)GetDlgItem(IDC_EDIT_NAME))->ShowWindow(FALSE); ((CEdit*)GetDlgItem(IDC_EDIT_EMAIL))->ShowWindow(FALSE); ((CEdit*)GetDlgItem(IDC_EDIT_EDIT))->ShowWindow(FALSE); GetDlgItem(IDC_STATIC1)->ShowWindow(FALSE);1/13/202357重載以后的OnOK()函數(shù)源代碼(續(xù))GetDlgItem(IDC_STATIC2)->ShowWindow(FALSE); ((CButton*)GetDlgItem(IDC_RADIO1))->ShowWindow(FALSE);

((CButton*)GetDlgItem(IDC_RADIO2))->ShowWindow(F

溫馨提示

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