基本控件編程步驟_第1頁(yè)
基本控件編程步驟_第2頁(yè)
基本控件編程步驟_第3頁(yè)
基本控件編程步驟_第4頁(yè)
基本控件編程步驟_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、于東2015,第2周2021/8/14控件是一些行為標(biāo)準(zhǔn)化了的窗口元素。Windows提供了一組標(biāo)準(zhǔn)控件。在MFC中,為每種控件實(shí)現(xiàn)了一個(gè)類(lèi)。課程內(nèi)只講編程思想以及一些通用的方法具體控件的使用方法,看視頻自學(xué)22021/8/1432021/8/14思考要實(shí)現(xiàn)的功能控件布局控件屬性修改通過(guò)類(lèi)向?qū)砑涌丶兞客ㄟ^(guò)類(lèi)向?qū)砑涌丶㈨憫?yīng)函數(shù)手動(dòng)添加控件輔助變量或函數(shù)=完成程序框架=完善添加的函數(shù)調(diào)試測(cè)試42021/8/14每種控件都有自己的若干屬性。在控件右鍵菜單中可以看到屬性頁(yè)5按鈕屬性頁(yè)的“常規(guī)”項(xiàng)編輯框?qū)傩皂?yè)的“樣式”項(xiàng)2021/8/14每個(gè)控件必須有唯一的“ID”,一般不需要改ID會(huì)以宏的形

2、式自動(dòng)定義并記錄在resource.h中在后面編程中,控件的ID也作為該控件使用的唯一標(biāo)識(shí)6我們添加的控件的ID2021/8/14通過(guò)類(lèi)向?qū)?,可以替代人工?lái)編寫(xiě)部分通用代碼7通過(guò)快捷鍵 Ctrl+WCtrl+W激活一定要記住2021/8/14只用到前兩個(gè)標(biāo)簽頁(yè)Message Maps : 向類(lèi)中添加消息響應(yīng)函數(shù)Member Variables: 向類(lèi)中添加并綁定成員變量82021/8/1491.選擇Project2.選擇要編輯的類(lèi)3.選擇要編輯的控件ID4.選擇要添加的控件消息5.點(diǎn)擊進(jìn)入代碼編寫(xiě)處2021/8/14消息響應(yīng)函數(shù)以類(lèi)的成員函數(shù)形式添加MFC的類(lèi)與普通C+類(lèi)最大的區(qū)別,一是有復(fù)雜

3、的繼承體系,第二就是有“消息響應(yīng)”代碼。下節(jié)課詳細(xì)講解。本課中,牢記并熟練使用以上步驟即可。102021/8/14MFC編程中,我們通常以繼承方式使用MFC中的類(lèi)。 比如,標(biāo)準(zhǔn)的比如,標(biāo)準(zhǔn)的CdialogCdialog類(lèi)中,沒(méi)有包括任何功能代碼,直接類(lèi)中,沒(méi)有包括任何功能代碼,直接使用該類(lèi)對(duì)象,創(chuàng)建的是一個(gè)空對(duì)話框。使用該類(lèi)對(duì)象,創(chuàng)建的是一個(gè)空對(duì)話框。 對(duì)對(duì)CdialogCdialog編程,由于無(wú)法修改編程,由于無(wú)法修改MFCMFC源碼,因此從源碼,因此從CdialogCdialog中中派生一個(gè)子類(lèi),比如叫做派生一個(gè)子類(lèi),比如叫做CMyDialogCMyDialog 在在CMyDialogCM

4、yDialog中實(shí)現(xiàn)我們自己想要做的功能代碼,這就是中實(shí)現(xiàn)我們自己想要做的功能代碼,這就是MFCMFC編程編程問(wèn)題:對(duì)于標(biāo)準(zhǔn)控件,是否也需要這樣做?112021/8/14答案: 如果我們不需要對(duì)控件的外觀和功能做改動(dòng),就不需要對(duì)如果我們不需要對(duì)控件的外觀和功能做改動(dòng),就不需要對(duì)其進(jìn)行派生,可以直接使用。否則,就需要派生一個(gè)控件其進(jìn)行派生,可以直接使用。否則,就需要派生一個(gè)控件類(lèi),來(lái)自己寫(xiě)代碼類(lèi),來(lái)自己寫(xiě)代碼比如,我要把編輯框當(dāng)做按鈕來(lái)使比如,我要把編輯框當(dāng)做按鈕來(lái)使用,或者要做一個(gè)三角形的按鈕(很少)用,或者要做一個(gè)三角形的按鈕(很少)那么問(wèn)題就來(lái)了:如何對(duì)控件編程? MFCMFC中,在界面上

5、布局變量后,程序僅生成了一個(gè)中,在界面上布局變量后,程序僅生成了一個(gè)IDID與之與之對(duì)應(yīng),控件本身還沒(méi)有出現(xiàn)在代碼中。對(duì)應(yīng),控件本身還沒(méi)有出現(xiàn)在代碼中。 需要通過(guò)組合的方式,在現(xiàn)有的需要通過(guò)組合的方式,在現(xiàn)有的CMyDialogCMyDialog類(lèi)中,添加控類(lèi)中,添加控件類(lèi)變量,來(lái)實(shí)現(xiàn)對(duì)控件的編程。件類(lèi)變量,來(lái)實(shí)現(xiàn)對(duì)控件的編程。122021/8/14131.選擇Project2.選擇要編輯的類(lèi)3.選擇要編輯的控件ID4.點(diǎn)擊添加變量彈出下一頁(yè)2021/8/14141.起一個(gè)名字4.點(diǎn)OK確定2.選擇變量類(lèi)型(稍后解釋?zhuān)?.選擇變量的數(shù)據(jù)類(lèi)型2021/8/14Category有兩種:value和

6、control ControlControl類(lèi)型,就是添加控件對(duì)應(yīng)的類(lèi)型,就是添加控件對(duì)應(yīng)的MFCMFC類(lèi)對(duì)象類(lèi)對(duì)象 ValueValue類(lèi)型,是添加與控件綁定的數(shù)值型變量,通過(guò)該變量類(lèi)型,是添加與控件綁定的數(shù)值型變量,通過(guò)該變量可以直接操作控件對(duì)應(yīng)的變量。可以直接操作控件對(duì)應(yīng)的變量。Type 對(duì)于對(duì)于controlcontrol類(lèi)型,類(lèi)型,typetype就是其控件類(lèi)就是其控件類(lèi) 對(duì)于對(duì)于valuevalue類(lèi)型,類(lèi)型,typetype有多種,如有多種,如CstringCstring,intint,floatfloat。152021/8/14在dlg中添加一個(gè)button和一個(gè)edit 為為

7、buttonbutton添加添加controlcontrol變量變量 為為editedit添加添加stringstring變量變量觀察dlg類(lèi)頭文件的變化16自動(dòng)添加的對(duì)象代碼2021/8/14思考要實(shí)現(xiàn)的功能控件布局控件屬性修改通過(guò)類(lèi)向?qū)砑涌丶兞客ㄟ^(guò)類(lèi)向?qū)砑涌丶㈨憫?yīng)函數(shù)手動(dòng)添加控件輔助變量或函數(shù)=完成程序框架=完善添加的函數(shù)調(diào)試測(cè)試172021/8/14如果用到其他相關(guān)的功能,此時(shí)在類(lèi)中添加比如,額外存放數(shù)據(jù)的普通變量,算法實(shí)現(xiàn)函數(shù)等182021/8/14下面,通過(guò)一個(gè)具體的例子,來(lái)說(shuō)明一下如何在程序中靈活運(yùn)用上述知識(shí),實(shí)現(xiàn)一個(gè)功能。編寫(xiě)一個(gè)計(jì)算器程序192021/8/14Clas

8、sWizard幫助我們實(shí)現(xiàn)了控件變量添加、消息響應(yīng)添加、消息函數(shù)添加等功能。帶來(lái)了方便,但也使得整個(gè)編碼比較零散。實(shí)際上,ClassWizard進(jìn)行的工作,都是在編寫(xiě)代碼。如果脫離向?qū)?,直接去添加代碼,也能實(shí)現(xiàn)同樣的功能。202021/8/14這里我們?cè)敿?xì)講解一下控件的手工刪除方法。 在編程中,如果添加了一個(gè)控件,后期覺(jué)得沒(méi)用,就刪除在編程中,如果添加了一個(gè)控件,后期覺(jué)得沒(méi)用,就刪除掉了,再次編譯的時(shí)候會(huì)出錯(cuò)。這是因?yàn)閯h除過(guò)程沒(méi)有使掉了,再次編譯的時(shí)候會(huì)出錯(cuò)。這是因?yàn)閯h除過(guò)程沒(méi)有使用用ClassWizardClassWizard,而是直接在布局界面中刪除。這樣就會(huì)導(dǎo),而是直接在布局界面中刪除。

9、這樣就會(huì)導(dǎo)致清理不徹底。致清理不徹底。 因此我們?cè)敿?xì)講解手工刪除控件的方法。這也是控件手工因此我們?cè)敿?xì)講解手工刪除控件的方法。這也是控件手工編程的重要部分。編程的重要部分。212021/8/14 Step1Step1:打開(kāi)類(lèi)向?qū)?,選擇控件、選擇消息,點(diǎn):打開(kāi)類(lèi)向?qū)?,選擇控件、選擇消息,點(diǎn)會(huì)彈出提示,意思是,函數(shù)代碼還需要手動(dòng)刪除。會(huì)彈出提示,意思是,函數(shù)代碼還需要手動(dòng)刪除。 Step2Step2: 在在Dlg.cppDlg.cpp文件中,手動(dòng)刪除函數(shù)。文件中,手動(dòng)刪除函數(shù)。 Step3Step3: 在資源管理器中,刪除對(duì)應(yīng)的控件。在資源管理器中,刪除對(duì)應(yīng)的控件。 Step4Step4: 在在R

10、esource.hResource.h中,刪除對(duì)應(yīng)的控件中,刪除對(duì)應(yīng)的控件IDID宏宏如果第一步直接就把資源管理器中的圖標(biāo)刪了,也不要如果第一步直接就把資源管理器中的圖標(biāo)刪了,也不要緊。打開(kāi)緊。打開(kāi)Resource.h, Resource.h, 辨認(rèn)出控件的辨認(rèn)出控件的IDID,然后,然后Alt+E+iAlt+E+i,全局,全局搜索該搜索該IDID,就能找到控件對(duì)應(yīng)的,就能找到控件對(duì)應(yīng)的ON_BN_CLICKEDON_BN_CLICKED ( ( IDC_ADD_BUTTONIDC_ADD_BUTTON , , OnAddButtonOnAddButton ) )刪除該行,再找后邊對(duì)應(yīng)的函數(shù),

11、在刪除該行,再找后邊對(duì)應(yīng)的函數(shù),在.h .h和和.cpp.cpp文件中刪除文件中刪除函數(shù)即可函數(shù)即可222021/8/14 Step1Step1:打開(kāi)類(lèi)向?qū)Вx擇控件、選擇變量頁(yè)面。:打開(kāi)類(lèi)向?qū)?,選擇控件、選擇變量頁(yè)面。 Step2Step2: 選擇刪除變量,選擇刪除變量,ClassWizardClassWizard將自動(dòng)刪除相關(guān)代碼。將自動(dòng)刪除相關(guān)代碼。 Step3Step3: 在資源管理器中,刪除對(duì)應(yīng)的控件。在資源管理器中,刪除對(duì)應(yīng)的控件。 Step4Step4: 在在Resource.hResource.h中,刪除對(duì)應(yīng)的控件中,刪除對(duì)應(yīng)的控件IDID宏宏如果先刪除了控件,則需要手動(dòng)刪除該控件對(duì)應(yīng)的如果先刪除了控件,則需要手動(dòng)刪除該控件對(duì)應(yīng)的變量變量,包括三行:包括三行:1. 1. Dlg.hDlg.h 中的變量定義中的變量定義2. 2. Dlg.cppD

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論