VC對話框與常用控件ppt課件_第1頁
VC對話框與常用控件ppt課件_第2頁
VC對話框與常用控件ppt課件_第3頁
VC對話框與常用控件ppt課件_第4頁
VC對話框與常用控件ppt課件_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 第第4 4章章 對話框與常用控件對話框與常用控件掌握掌握ButtonButton、Edit BoxEdit Box和和Static TextStatic Text控控件的創(chuàng)建和使用方法件的創(chuàng)建和使用方法掌握基于對話框的應用程序的編程技術掌握基于對話框的應用程序的編程技術掌握模式對話框、非模式對話框和通用對掌握模式對話框、非模式對話框和通用對話框的設計與調(diào)用話框的設計與調(diào)用教學目標Visual C+Visual C+程序設計程序設計 電子教案電子教案-王明福編王明福編 教學內(nèi)容 MyCalculator程序 演示開發(fā)MyCalculator程序 口令對話框 通用對話框 常用控件介紹 4.1 M

2、yCalculator程序程序 v 程序運行結(jié)果v 程序運行演示 4.2 4.2 開發(fā)開發(fā)MyCalculatorMyCalculator程序程序 4.2.1 4.2.1 創(chuàng)建工程創(chuàng)建工程4.2.2 4.2.2 可視化設計可視化設計4.2.3 4.2.3 為編輯框為編輯框IDC_DISPLAYIDC_DISPLAY引入變量引入變量4.2.4 4.2.4 為為CMyCalculatorDlgCMyCalculatorDlg類添加數(shù)據(jù)成員類添加數(shù)據(jù)成員4.2.5 4.2.5 為為BUTTONBUTTON按鈕的按鈕的BN_CLICKEDBN_CLICKED事件添加響應函數(shù)事件添加響應函數(shù)4.2.6

3、4.2.6 編寫程序代碼編寫程序代碼4.2.7 4.2.7 技術要點技術要點4.2.8 4.2.8 程序優(yōu)化程序優(yōu)化 4.2.1 4.2.1 創(chuàng)建工程創(chuàng)建工程 創(chuàng)建MyCalculator工程的步驟: (1) 啟動Visual C+6.0。從“File菜單中選擇“New” ; (2) 在New對話框中選擇“Project標簽 ,然后指定工程類型MFC AppWizardexe、工程名MyCalculator和工程位置D:MyVC; (3) 點擊“OK按鈕,彈出MFC AppWizard-Step 1對話框。選擇“Dialog based單選按鈕,創(chuàng)建一個基于對話框的應用程序; (4) 單擊“F

4、inish” 按鈕。此時Visual c+6.0將顯示NewProject Information窗口; (5) 單擊“OK” 按鈕。于是,Visual C+6.0就會創(chuàng)建MyCalculator工程以及相關的所有文件。 4.2.2 4.2.2 可視化設計可視化設計 可視化設計,就用VC+自帶的工具軟件Winzards,制作計算器程序界面。即添加計算器中的數(shù)字、運算符等按鈕和數(shù)字顯示編輯框。 控件的兩個要素:ID標識符和Caption文本 4.2.3 4.2.3 為編輯框為編輯框IDC_DISPLAYIDC_DISPLAY引引入變量入變量 為了能夠在程序運行過程中,將輸入的數(shù)據(jù)和計算的結(jié)果在編

5、輯框上顯示,必須為它引入一個變量,從而能夠使編輯框以變量的形式出現(xiàn)在程序中。利用函數(shù)UpdateData(true)或UpdateData(false)就可達到目的。 在MFC ClassWizard對話框中,選擇“Member Variable標簽為IDC_DISPLAY編輯框引入變量:CString m_display; 4.2.4 4.2.4 為為CMyCalculatorDlgCMyCalculatorDlg類添加數(shù)據(jù)成員類添加數(shù)據(jù)成員為了實現(xiàn)計算器功能,我們需要向CMyCalculatorDlg類即MyCalculatorDlg.h文件中添加變量。變量屬性和用途如下表。數(shù)據(jù)類型數(shù)據(jù)變

6、量名稱數(shù)據(jù)的作用doublem_first存儲一次運算的第一個數(shù)以及一次運算的結(jié)果doublem_second存儲一次運算的第二個數(shù)doublem_coff存儲小數(shù)點的系數(shù)權值CStringm_operator存儲運算操作符 4.2.5 4.2.5 為為ButtonButton按鈕的按鈕的BN_CLICKEDBN_CLICKED事件添加響應函數(shù)事件添加響應函數(shù) 用MFC ClassWizard為對話框IDD_MYCALCULATOR_DIALOG中的所有Button按鈕的BN_CLICKED事件添加處理函數(shù),如表4-3所示。Object IDsMessagesMember FunctionsI

7、DC_BUTTON1BN_CLICKEDOnOnButton1()IDC_BUTTON9BN_CLICKEDOnOnButton9()IDC_BUTTON_POINTBN_CLICKEDOnButtonPoint()IDC_BUTTON_SIGNBN_CLICKEDOnButtonSign()IDC_BUTTON_ADD BN_CLICKEDOnButtonAdd() IDC_BUTTON_MINUS BN_CLICKEDOnButtonMinus() IDC_BUTTON_MUTIPLY BN_CLICKEDOnButtonMutiply() 4.2.6 4.2.6 編寫程序代碼編寫程序代碼

8、 1. 1. 為數(shù)字為數(shù)字“N N按鈕的消息響應函數(shù)添加代碼。算法設計如下:按鈕的消息響應函數(shù)添加代碼。算法設計如下:(1) (1) 作為整數(shù)輸入數(shù)字作為整數(shù)輸入數(shù)字N N時時(N =0,9)(N =0,9): m_second=m_second m_second=m_second* *10+N;10+N;(2) (2) 作為小數(shù)輸入數(shù)字作為小數(shù)輸入數(shù)字N N時時(N =0,9)(N =0,9): m_second=m_second+N m_second=m_second+N* *m_coff; m_coff; m_coff m_coff * *= 0.1;= 0.1; void CMyCal

9、culatorDlg:OnButton8() void CMyCalculatorDlg:OnButton8() if( m_coff = 1.0)/ if( m_coff = 1.0)/ 作為整數(shù)輸入作為整數(shù)輸入m_second = m_secondm_second = m_second* *10 + 8;10 + 8;else /else /作為小數(shù)輸入作為小數(shù)輸入m_second = m_second + 8m_second = m_second + 8* *m_coff; m_coff; m_coff m_coff * *= 0.1;= 0.1; UpdateDisplay(m_sec

10、ond);/UpdateDisplay(m_second);/更新編輯框的數(shù)據(jù)顯示更新編輯框的數(shù)據(jù)顯示 完全類似,請讀者為其它數(shù)字按鈕的消息響應函數(shù)添加代碼。完全類似,請讀者為其它數(shù)字按鈕的消息響應函數(shù)添加代碼。 2. 2. 為運算符(為運算符(+ +、- -、* *、/ /)按鈕的消息響應函數(shù)添)按鈕的消息響應函數(shù)添加代碼加代碼算法描述:(1m_first與 m_second作m_operator運算后m_first;(20m_second;(3m_first m_display (顯示)(4用當前點擊的運算符 m_operator;(5將小數(shù)的權值變量m_coff置1.0復位。以點擊“+”

11、運算符為例,在消息響應函數(shù)中編寫如下代碼。void CMyCalculatorDlg:OnButtonAdd() Calculate(); m_operator=+;void CMyCalculatorDlg:Calculate(void) switch(m_operator.GetAt(0) case +: m_first +=m_second;break;case -: m_first -=m_second;break;case *: m_first *=m_second;break;case /: if(fabs(m_second)m_first(5將小數(shù)的權值變量m_coff置1.0。

12、(6輸入的運算符 m_operator; void CMyCalculatorDlg:OnButtonEqual() Calculate(); m_first = 0.0; m_operator=+; 4 4在在OnButtonSqrt()OnButtonSqrt()函函數(shù)中,編寫代碼數(shù)中,編寫代碼 void CMyCalculatorDlg:OnButtonSqrt() m_second = sqrt(m_second); UpdateDisplay(m_second); 5. 5. 為為“C C和和“1/X1/X按鈕的按鈕的消息響應函數(shù)編寫代碼消息響應函數(shù)編寫代碼void CMyCalcu

13、latorDlg:OnButtonClear() m_first=0.0; m_second=0.0;m_operator = +; m_coff = 1.0;UpdateDisplay(0.0);void CMyCalculatorDlg:OnButtonReciprocal() if(fabs(m_second)Create(IDD_PASSWORD_DIALOG,this); m_Dlg-ShowWindow(SW_SHOW); /顯示非模態(tài)對話框 對話框的調(diào)用對話框的調(diào)用返返 回回 4.3.2 4.3.2 編輯口令對話框資編輯口令對話框資源源 1. 1. 創(chuàng)建對話框資源創(chuàng)建對話框資源參

14、照第參照第2 2章中章中2.3.22.3.2節(jié)的方法,在節(jié)的方法,在MyHelloMyHello工程中,新建一個工程中,新建一個IDID標識符為標識符為“IDD_PASSWORD_DIALOGIDD_PASSWORD_DIALOG”、CaptionCaption為為“口令口令的對話框資源的對話框資源 2 2編輯對話框資源編輯對話框資源 返返 回回 4.3.3 4.3.3 創(chuàng)建口令對話框類創(chuàng)建口令對話框類 返返 回回為IDD_PASSWORD_DIALOG對話框創(chuàng)建一個新類。操作步驟如下: (1) 在IDD_PASSWORD_DIALOG對話框資源上單擊鼠標右鍵,在彈出的快捷菜單中選擇Class

15、 Wizard或雙擊對話框,或通過菜單View/Class Wizard),彈出MFC ClassWizard對話框。在MFC ClassWizard對話框彈出后緊接著彈出Adding Class 對話框。 (2) 在Adding Class 對話框中確認墨認選擇Create a new class,單擊“OK按鈕,彈出New Class對話框。 (3) 在Name編輯框中輸入新建類名CPasswordDialog,其它取墨認值。 4.3.4 4.3.4 為口令編輯框引入變?yōu)榭诹罹庉嬁蛞胱兞苛?返返 回回為IDC_PASSWORD_EDIT編輯框引入變量的步驟如下:(1) 在View菜單中選

16、擇ClassWizard菜單項。(2) 在MFC ClassWizard對話框中,選擇Member Variable標簽,作如下選擇: Class name: CPasswordDialog Control IDs: IDC_PASSWORD_EDIT(3) 單擊“Add Variable按鈕,此時,Visual C+6.0將顯示一個Add Member Variable對話框,設置如下: Variable name: m_password Category: Value Variable type: Cstring(4) 單擊Add Member Variable對話框的“OK按鈕,返回到M

17、FC ClassWizard對話框,再單擊MFC ClassWizard對話框的“OK按鈕。于是,Visual C+6.0就為編輯框IDC_PASSWORD_EDIT引入變量m_ password。 4.3.5 4.3.5 調(diào)用口令對話框調(diào)用口令對話框 返返 回回在應用程序類的InitInstance()函數(shù)中編寫調(diào)用口令對話框代碼。1修改InitInstance()函數(shù)BOOL CMyHelloApp:InitInstance() m_pMainWnd-UpdateWindow();CPasswordDialog Dlg; /聲明CpasswordDialog類的對象if(Dlg.DoMod

18、al() != IDOK)return false; if(Dlg.m_password != 123456)/口令設為字符串123456AfxMessageBox(“口令錯誤,);return false;return TRUE;2在MyHello.cpp的頭部,加入下面的包含語句: #include PasswordDialog.h 4.3.6 4.3.6 顯示非模式對話顯示非模式對話框框 返返 回回請讀者按以下要求編輯一菜單:ID:ID_NOMODALLESS;Caption: 非模式對話框。 顯示非模式對話框操作步驟如下:1在視圖類中添加對話框成員指針class CMyHelloVie

19、w : public Cview public: CPasswordDialog* m_pModallessDlg; ;在MyHelloView.h中加入:#include PasswordDialog.h 返返 回回2. 修改視類的構(gòu)造函數(shù)和析構(gòu)函數(shù)修改視類的構(gòu)造函數(shù)和析構(gòu)函數(shù)分別在視類的構(gòu)造函數(shù)和析構(gòu)函數(shù)中添加如分別在視類的構(gòu)造函數(shù)和析構(gòu)函數(shù)中添加如下代碼:下代碼:CMyHelloView:CMyHelloView() m_pModallessDlg = NULL; /初始化指針初始化指針 CMyHelloView:CMyHelloView() if(m_pModallessDlg !=

20、NULL)delete m_pModallessDlg;/釋放空間釋放空間返返 回回3 3編寫調(diào)用非模式對話框代碼編寫調(diào)用非模式對話框代碼(1 1利用利用MFC ClassWizardMFC ClassWizard,為菜單,為菜單ID_NOMODALLESSID_NOMODALLESS添添加了消息響應函數(shù)加了消息響應函數(shù)OnNomodalless()OnNomodalless()。(2 2定位在定位在OnNomodalless()OnNomodalless()函數(shù),編寫如下顯示非模函數(shù),編寫如下顯示非模式對話框代碼:式對話框代碼:void CMyHelloView:OnNomodalless(

21、) void CMyHelloView:OnNomodalless() if(m_pModallessDlg = NULL if(m_pModallessDlg = NULL m_pModallessDlg = new CPasswordDialog; m_pModallessDlg = new CPasswordDialog;m_pModallessDlg-m_pModallessDlg-Create(IDD_PASSWORD_DIALOG,this);Create(IDD_PASSWORD_DIALOG,this); m_pModallessDlg-ShowWindow(SW_SHOW);

22、 m_pModallessDlg-ShowWindow(SW_SHOW); 4.4 4.4 通用對話框通用對話框 在應用程序設計中,除使用自定義的對話框之外,經(jīng)常用到系統(tǒng)定義的通用對話框類。通用對話框類用于各種Windows常用應用程序中,執(zhí)行各種標準操作。它們由CDialog類派生而來,其資源全部包含在WindowsSYSTEM目錄下的COMMDLG.DLL動態(tài)鏈接庫中。常用的通用對話框類有: CFileDialog 文件對話框類; CFontDialog 字體對話框類; CColorDialog 顏色對話框類; CPrintDialog 打印對話框類。 4.4.1 CFileDialog 4.4.1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論