Windows編程入門2.ppt_第1頁
Windows編程入門2.ppt_第2頁
Windows編程入門2.ppt_第3頁
Windows編程入門2.ppt_第4頁
Windows編程入門2.ppt_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、,VC+的Windows編程入 門,馮耀霖,3 常用控件,靜態(tài)控件 編輯框控件 按鈕控件 列表框和組合框控件 滾動條控件,靜態(tài)控件的基類是CStatic。所謂“靜態(tài)”,是指這類控件只能用于輸出信息,而不能接收用戶的輸入信息,也不會產(chǎn)生任何消息。靜態(tài)控件對象的ID值都默認(rèn)為:IDC_STATIC。 有三種標(biāo)準(zhǔn)的靜態(tài)控件:靜態(tài)文本框(Static Text)、組框(Group Box)和圖片框(Picture)。 (1)靜態(tài)文本框用于顯示文本,主要起標(biāo)注作用?!皹?biāo)題”(Caption)是其最重要的屬性,標(biāo)題值就是需顯示的文本。 (2)組框用于控件分組,使界面對象的功能從視覺上進(jìn)行區(qū)分,主要用于對單

2、選按鈕進(jìn)行分組。主要屬性就是“標(biāo)題”。,3.1 靜態(tài)控件,(3)圖片框有三個(gè)重要的屬性: Type(類型):圖片類型可選擇Icon(圖標(biāo))、Bitmap(位圖)、Enhanced Metafile(增強(qiáng)圖元文件)、Frame(框架)、Rectangle(矩形區(qū)域)等。 Image(圖象):當(dāng)圖片類型為Icon或Bitmap時(shí),通過此屬性可以指定資源的ID(在Windows程序設(shè)計(jì)中,資源也是對象)。如果要在設(shè)計(jì)階段把外部的圖象插入到圖片控件,則先要把外部的圖象文件導(dǎo)入工程,才能成為可用資源。 Color(顏色):設(shè)置Frame的邊框顏色或Rectangle的填充色??蛇x的顏色有break(黑)

3、、while(白)、gray(灰)或者etched(有3D外觀的腐蝕色)。,編輯框(Edit Box)也稱文本框,MFC的Cedit類封裝了編輯框控件。 編輯框?qū)嶋H上是一個(gè)簡易的文本編輯器,用戶可以在編輯框中輸入并編輯文本。,3.2 編輯框控件,編輯框控件的主要屬性 Align text 文本對齊方式,其值可以是Left、Right、Center(居中)。 Multiline 多行文本,默認(rèn)是FALSE(單行)。 Number 只接受數(shù)字符號。 Horizontal scroll 添加水平滾動條,只對多行文本有效。 Vertical scroll 添加垂直滾動條,只對多行文本有效。 Passw

4、ord 屏蔽用戶輸入的信息,用特定字符統(tǒng)一顯示,默認(rèn)字符是 *。,Step1:建立工程架構(gòu) 使用MFC AppWizard建立一個(gè)對話框工程, 工程名為:casePW,【Case2】密碼輸入,Step2:設(shè)計(jì)窗口界面 使用對話框編輯器設(shè)計(jì)工程的窗口界面,如圖22所示。各控件的屬性設(shè)置如下: - 控件名ID 標(biāo)題其他屬性 - 編輯框IDC_EDIT1 密碼 靜態(tài)文本IDC_STATIC1 輸入密碼:居中 靜態(tài)文本IDC_STATIC2 居中,Client edge 命令按鈕IDC_BUTTON1 確定 命令按鈕IDC_BUTTON2 退出 -,Step3:設(shè)計(jì)消息處理成員函數(shù) 使用MFC Cla

5、ss Wizard設(shè)計(jì)成員變量和消息處理函數(shù)。 (1)為對話框設(shè)置綁定相關(guān)控件的2個(gè)成員變量 - 控件名 成員變量名變量類型 字符個(gè)數(shù) - IDC_EDIT1 m_pwd Value , Cstring 6 IDC_STATIC2 m_OK Value , Cstring 20 - (2)建立“確定”按鈕的BN_CLICKED消息處理函數(shù)OnButton1( ),用于接收用戶輸入,檢測密碼的合法性。,為OnButton1()添加的代碼如下: /TODO Add your control notification handler code here UpdateDtata(); /控件數(shù)據(jù)傳遞給

6、成員變量 if(m_pwd=”pwd123”) m_OK=”密碼正確!”; else m_OK=”密碼錯(cuò)誤!”; UpdateData(FALSE);/成員變量中的數(shù)據(jù)傳遞給控件,(3)建立“退出”按鈕的BN_CLICKED消息處理函數(shù)OnButton2( ),用于結(jié)束工程的運(yùn)行。 為OnButton2()添加的代碼如下: /TODO Add your control notification handler code here EndDialog(1); Step4:工程的編譯、鏈接和運(yùn)行 運(yùn)行結(jié)果如圖23所示。,MFC提供有三種標(biāo)準(zhǔn)按鈕控件: 命令按鈕(Button) 復(fù)選框按鈕(Chec

7、k Box) 單選按鈕(Radio Button) 它們都是CButton類的派生類。,3.3 按鈕控件,命令按鈕也稱按鍵按鈕,可以觸發(fā)某個(gè)命令的執(zhí)行,這種按鈕不會被鎖定,響應(yīng)過后會自動彈起恢復(fù)原狀。 復(fù)選框和單選按鈕都屬于選擇性按鈕,都有兩種狀態(tài):選擇(1)和未選擇(0)。它們的差別在于:復(fù)選框是相容性按鈕,即在一組復(fù)選框中可同時(shí)有多個(gè)復(fù)選框處于選擇狀態(tài);而單選按鈕則是互斥性按鈕,即在一組單選按鈕中只能有一個(gè)處于選擇狀態(tài),當(dāng)一個(gè)單選按鈕被選中時(shí),同組的其他單選按鈕自動落選。,本實(shí)例利用命令按鈕和單選按鈕設(shè)計(jì)一個(gè)只進(jìn)行四則算術(shù)運(yùn)算的簡單計(jì)算器。 Step1:建立工程架構(gòu) 使用MFC AppWi

8、zard建立一個(gè)對話框工程,工程名為:Calculator01 Step2:設(shè)計(jì)窗口界面 使用對話框編輯器設(shè)計(jì)工程的窗口界面,效果如圖24所示。各控件的屬性設(shè)置如下:,【Case3】簡單計(jì)算器(1),控件名ID 標(biāo)題 其他屬性 - 編輯框IDC_EDIT1 無 Left 編輯框IDC_EDIT2 無 Left 靜態(tài)文本IDC_STATIC1 無 Left, Client edge 靜態(tài)文本IDC_STATIC2 運(yùn)算數(shù)1 Center 靜態(tài)文本IDC_STATIC3 運(yùn)算數(shù)2 Center 靜態(tài)文本IDC_STATIC4 結(jié)果 Center 組框IDC_STATIC5 運(yùn)算符 單選按鈕IDC_

9、RADIO1 單選按鈕IDC_RADIO2 單選按鈕IDC_RADIO3 單選按鈕IDC_RADIO4 命令按鈕IDC_BUTTON1 命令按鈕IDC_BUTTON2 退出 圖24,Step3:設(shè)計(jì)消息處理成員函數(shù) 使用MFC Class Wizard設(shè)計(jì)成員變量和消息處理函數(shù)。 (1)為對話框設(shè)置綁定相關(guān)控件的成員變量 - ID 變量名 變量類型值域 - IDC_EDIT1 m_num1 Value,double IDC_EDIT2 m_num2 Value,double IDC_STATIC1 m_show Value,Cstring 10 -,(2)在程序Calculator01Dlg.

10、cpp的首部定義一個(gè)可被各控件訪問的全局變量: int opt; /運(yùn)算符編號 (3)建立4個(gè)單選按鈕的BN_CLICKED消息處理函數(shù),用于確定運(yùn)算。在各函數(shù)體中只需編寫一個(gè)語句: OnRadio1( )函數(shù)中為:opt =1; /加法 OnRadio2( )函數(shù)中為:opt =2; /減法 OnRadio3( )函數(shù)中為:opt =3; /乘法 OnRadio4( )函數(shù)中為:opt =4; /除法 (4)建立“”命令按鈕的BN_CLICKED消息處理函數(shù)OnButton1(),用于執(zhí)行指定的算術(shù)運(yùn)算并顯示運(yùn)算結(jié)果。 代碼如下:,/TODO Add your control notific

11、ation handler code here double k; UpdateData(); switch(opt) case 1: k=m_num1+m_num2;break; case 2: k=m_num1-m_num2; break; case 3: k=m_num1*m_num2; break; case 4: if(m_num2!=0) k=m_num1/m_num2; else MessageBox(“除數(shù)為0!”,”計(jì)算器”); return; m_show.Format(“%10.3f”, k); UpdateData(FALSE);,MessageBox是系統(tǒng)函數(shù),功能是

12、顯示消息框。它有2個(gè)字符串型參數(shù): 第一個(gè)是要顯示的消息內(nèi)容; 第二個(gè)是消息框的標(biāo)題,可缺省。,(5)建立“退出”按鈕的BN_CLICKED消息處理函數(shù)OnButton2( ),用于結(jié)束工程的運(yùn)行。 為OnButton2()添加的代碼如下: /TODO Add your control notification handler code here EndDialog(1); Step4:工程的編譯、鏈接和運(yùn)行 運(yùn)行效果如圖25。,對Csae2作如下修改:使用系統(tǒng)對話框MessageBox顯示結(jié)果;增加如下功能:當(dāng)連續(xù)三次輸入錯(cuò)誤密碼,則拒絕再次輸入,并輸出“對不起,再見!”。,【Job3】,列

13、表框(ListBox)是一個(gè)列有若干可選項(xiàng)目的輸入窗口,它允許用戶從所列出的表項(xiàng)中進(jìn)行單項(xiàng)或多項(xiàng)選擇,被選擇的項(xiàng)呈高亮度顯示,并且一般帶有一個(gè)垂直滾動條。 組合框(ComboBox)是由一個(gè)編輯框和一個(gè)列表框組成。用戶既可以在編輯框中輸入,也可以在列表框中選擇一個(gè)表項(xiàng)來完成輸入。,3.4 列表框和組合框控件,修改Case3,用一個(gè)列表框替換組框和四個(gè)單選按鈕,如圖26所示。 Step1: 建立一個(gè)對話框工程架構(gòu),工程名為:Calculator02 Step2: 除了列表框外,其余同Case3。 在列表框的屬性對話框里,設(shè)置ID為:IDC_LIST1;在“樣式”(Styles)選項(xiàng)卡中清除對“排

14、序”(Sort)選項(xiàng)的選擇。如圖27所示。,【Case4】簡單計(jì)算器(2),Step3: (1)為對話框設(shè)置綁定相關(guān)控件的成員變量 除m_num1、m_num2和m_show外,再為列表框添加一個(gè)m_list變量,Control類,CListBox型。 (2) 建立對話框的WN_INITDIALOG消息函數(shù)OnInitDialog(),用于初始化列表框,添加的代碼如下: /TODO Add extra initialization here m_list.AddString(“加”); m_list.AddString(“減”); m_list.AddString(“乘”); m_list.A

15、ddString(“除”); 列表框的成員函數(shù)AddString()的功能是在列表框中添加一個(gè)選項(xiàng)。,(3)建立列表框的消息處理函數(shù) 選擇列表框IDC_LIST1的消息為“LBN_SELCHANGE”,其對應(yīng)的函數(shù)是OnSelchangeList1(),添加代碼如下: /TODO Add your control notification handler code here opt = m_list.GetCurSel()+1; 列表框的成員函數(shù)GetCurSel()的功能是獲取列表框當(dāng)前選項(xiàng)的序號,序號從0開始。 (4)建立“”按鈕和“退出”按鈕的消息處理函數(shù), 同Calculator01工

16、程。,Step4:工程的編譯、鏈接和運(yùn)行 運(yùn)行效果如圖28所示。,【Job4】在Case4中增加兩項(xiàng)運(yùn)算:“開根號”和“乘冪”請完成工程Calculator03,Windows系統(tǒng)很多窗口都有附加的滾動條,便于用戶瀏覽顯示內(nèi)容。作為控件的滾動條其使用方法和特性與窗口中附加的滾動條十分相似,但功能不同。 滾動條控件是一個(gè)輸入數(shù)據(jù)的計(jì)數(shù)器控件,分為水平滾動條(Horizontal Scroll Bar)和垂直滾動條(Vertical Scroll Bar)兩種。,3.4 滾動條控件,水平和垂直滾動條的結(jié)構(gòu)是一樣的,兩端都有一個(gè)滾動箭頭按鈕,中間有一個(gè)沿兩端方向移動的滑塊,在箭頭按鈕與滑塊之間稱之為

17、滾頁區(qū)。有三種滾動操作: 單擊箭頭按鈕:執(zhí)行慢速滾動,也稱步進(jìn)滾動,滾動單位為1。 拖曳滑塊:執(zhí)行快速自由滾動。 單擊滾頁區(qū):執(zhí)行滾頁,頁長由用戶設(shè)定,如10。 注意:滾動條通常部用于精確數(shù)據(jù)值的輸入,而是作為可連續(xù)調(diào)整輸入的工具。,本實(shí)例利用水平滾動條以及三基色(紅、綠、藍(lán))原理設(shè)計(jì)一個(gè)簡單調(diào)色板。 Step1: 由向?qū)Ы⒁粋€(gè)對話框工程架構(gòu),工程名為:Color Step2: 界面設(shè)計(jì)效果如圖29。其控件基本屬性如下所示:,【Case5】簡單調(diào)色板,- 控件名ID 標(biāo) 題 其他屬性 - 靜態(tài)文本 IDC_DRAW 默認(rèn) Client edge 組框 默認(rèn) 紅色 編輯框 IDC_RED 滾動

18、條 IDC_SCROLLBAR1 組框 默認(rèn) 綠色 編輯框 IDC_GREEN 滾動條 IDC_SCROLLBAR2 組框 默認(rèn) 藍(lán)色 編輯框 IDC_BLUE 滾動條 IDC_SCROLLBAR3 命令按鈕 IDC_BUTTON 退出 -,Step3: (1)為對話框設(shè)置綁定相關(guān)控件的成員變量: - 控件ID 成員變量名 變量類型 值域 - IDC_RED m_Red Value,int 0255 IDC_GREEN m_Green Value,int 0255 IDC_BLUE m_Blue Value,int 0255 IDC_SCROLLBAR1 m_Scroll1 Control,S

19、CrollBar IDC_SCROLLBAR2 m_Scroll2 Control,SCrollBar IDC_SCROLLBAR3 m_Scroll3 Control,ScrollBar -,(2)建立對話框的WN_INITDIALOG消息函數(shù)OnInitDialog(),用于對有關(guān)變量進(jìn)行初始化。添加的代碼如下: /TODO Add extra initialization here m_Red=m_Green=m_Blue=0; /置成員變量的初值 /設(shè)置滾動條的值域和當(dāng)前位置 m_Scroll1.SetScrollRange(0,255); m_Scroll1.SetScrollPos

20、(m_Red); m_Scroll2.SetScrollRange(0,255); m_Scroll2.SetScrollPos(m_Green); m_Scroll3.SetScrollRange(0,255); m_Scroll3.SetScrollPos(m_Blue); UpdateData(FALSE);,(3)建立三個(gè)編輯框的ON_CHANGE消息函數(shù)On_ChangeRed() On_ChangeGreen() On_ChangeBlue() 用于接收成員變量的數(shù)據(jù)。這三個(gè)消息處理函數(shù)都只需添加一條語句: UpdateData(FALSE);,(4)建立對話框的WM_HSCROL

21、L消息函數(shù)On_Hscroll(),消息WM_HSCROLL是由滾動條發(fā)送的。 /TODO Add your control notification handler code here /接到紅色滾動條的消息 if(pScrollBar-GetDlgCtrlID()=IDC_SCROLLBAR1) if(nSBCode=SB_THUMBPOSITION)m_Red=nPos; /滑塊滾動 if(nSBCode=SB_LINELEFT ,/接到綠色滾動條的消息 if(pScrollBar-GetDlgCtrlID()=IDC_SCROLLBAR2) if(nSBCode=SB_THUMBPOS

22、ITION) m_Green=nPos; if(nSBCode=SB_LINELEFT ,/接到藍(lán)色滾動條的消息 if(pScrollBar-GetDlgCtrlID()=IDC_SCROLLBAR3) if(nSBCode=SB_THUMBPOSITION) m_Blue=nPos; if(nSBCode=SB_LINELEFT /調(diào)用自定義成員函數(shù),向調(diào)色板繪圖,(5)為“退出”按鈕的BN_CLICKED消息處理函數(shù)OnButton1()添加一調(diào)語句: EndDialog(1); (6)為對話框添加public型的成員函數(shù)void Draw(),用于調(diào)制靜態(tài)文本框IDC_DRAW的顏色。在

23、VC+的“工程工作區(qū)”(左窗格)的“Class View”選項(xiàng)卡下,右擊CcolorDlg再選擇“Add member function”,在彈出的“添加成員函數(shù)”對話框中,先后輸入函數(shù)的類型“void”和函數(shù)的名字“Draw”(如圖30),按“確定”后在所顯示的Draw函數(shù)框架內(nèi)輸入Draw函數(shù)的如下代碼:,void CcolorDlg:Draw() /設(shè)置調(diào)色板 CWnd *pWnd=GetDlgItem(IDC_DRAW); /獲取靜態(tài)文本的ID CRect rcClient; /建立矩形對象 pWnd-GetClientRect(rcClient); /獲取IDC_DRAW所占矩形區(qū)域

24、, /并轉(zhuǎn)換為矩形對象 /建立繪圖對象 CDC *pDC=pWnd-GetDC(); /獲取當(dāng)前設(shè)備環(huán)境對象句柄 CBrush drawBrush; /建立畫刷,設(shè)置畫刷顏色 drawBrush.CreateSolidBrush(RGB(m_Red,m_Green,m_Blue); /繪圖 CBrush *pOldBrush=pDC-SelectObject( ,Step4:工程的編譯、鏈接和運(yùn)行 運(yùn)行效果如圖31所示。,前面設(shè)計(jì)的計(jì)算器都比較簡單,與實(shí)際計(jì)算器有較大差別。仿真計(jì)算器模擬實(shí)際計(jì)算器的基本使用方法,即數(shù)值和運(yùn)算符都通過按鍵按鈕輸入,如圖32所示。該工程的用戶工作量較大,可分期完成

25、。 第一期工程可只完成基本計(jì)算功能,如只實(shí)現(xiàn)“單一”計(jì)算功能,且不實(shí)現(xiàn)Backspace功能。,【Case6】仿真計(jì)算器,下面是第一期工程的設(shè)計(jì)過程。 Step1:建立工程架構(gòu) 使用MFC AppWizard建立一個(gè)對話框工程, 工程名為:Calculator04 Step2:設(shè)計(jì)窗口界面 使用對話框編輯器設(shè)計(jì)工程的窗口界面。各控件的屬性設(shè)置如下:,控件名ID 標(biāo)題 其他屬性 - 編輯框 IDC_EDIT1 Right 命令按鈕 IDC_BUTTON0 0 命令按鈕 IDC_BUTTON1 1 命令按鈕 IDC_BUTTON2 2 命令按鈕 IDC_BUTTON3 3 命令按鈕 IDC_BUT

26、TON4 4 命令按鈕 IDC_BUTTON5 5 命令按鈕 IDC_BUTTON6 6 命令按鈕 IDC_BUTTON7 7 命令按鈕 IDC_BUTTON8 8 命令按鈕 IDC_BUTTON9 9 命令按鈕 IDC_BUTTONSIGN +/- 命令按鈕 IDC_BUTTONDOT .,控件名ID 標(biāo) 題 - 命令按鈕 IDC_BUTTONEQU = 命令按鈕 IDC_BUTTONADD 命令按鈕 IDC_BUTTONSUB 命令按鈕 IDC_BUTTONMUT 命令按鈕 IDC_BUTTONDIV 命令按鈕 IDC_BUTTONMOD % 命令按鈕 IDC_BUTTON10 1/x 命

27、令按鈕 IDC_BUTTONSQRT sqrt 命令按鈕 IDC_BUTTONBKS Backspace 命令按鈕 IDC_BUTTONCE CE 命令按鈕 IDC_BUTTONQUIT Quit 對話框 默認(rèn) 仿真計(jì)算器V1,Step3:建立消息映射和消息處理函數(shù) (1)為對話框設(shè)置綁定編輯框控件的成員變量: 變量名為m_show,變量類型為Value,double (2)為對話框定義若干全局變量,在VC+的“工程工作區(qū)”(左窗格)的“File View”選項(xiàng)卡下,雙擊CCalculator03Dlg.cpp,在程序的首部處輸入如下代碼: int opt, decimal; double n

28、um, num1, right; 其中,opt用于存放運(yùn)算符編號; decimal用于表示小數(shù),0整數(shù),1小數(shù); num和num1分別存放當(dāng)前運(yùn)算數(shù)和第一運(yùn)算數(shù); right用于存放位權(quán)。,另外,為執(zhí)行平方根計(jì)算在該程序首部添加: #include “math.h” (3)為對話框的初始化函數(shù)OnInitDialog()添加如下代碼: / TODO: Add extra initialization here decimal=opt=0; m_show=num=num1=0; UpdateData(FALSE);,(4)建立數(shù)字按鈕“0”到“9”的BN_CLICKED消息的處理函數(shù)。 為按鈕”

29、1”的消息函數(shù)OnButton1()添加的代碼: / TODO: Add your control notification handler code here if(decimal) num+=1*right; right /=10; else num=num*10+1; m_show=num; UpdateData(FALSE); 其他數(shù)字按鈕的消息函數(shù)類似,只需把其中的1改成相應(yīng)數(shù)字即可。,(5)建立小數(shù)點(diǎn)的BN_CLICKED消息的處理函數(shù) OnButtondot(),添加代碼如下: / TODO: Add your control notification handler code here decimal=1; right=1/10; (6) 建立“+/-”

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論