在MFC中給輸入控件添加校驗(yàn)的方法
大家好!今天我準(zhǔn)備給大家介紹一下在MFC中給輸入控件添加校驗(yàn)的方法。在之前的第3篇和第4篇文章中,我已經(jīng)向大家介紹了MFC中DDX的用法,接下來,我將給大家介紹MFC中DDV的用法。同時(shí),向大家補(bǔ)充一
大家好!今天我準(zhǔn)備給大家介紹一下在MFC中給輸入控件添加校驗(yàn)的方法。在之前的第3篇和第4篇文章中,我已經(jīng)向大家介紹了MFC中DDX的用法,接下來,我將給大家介紹MFC中DDV的用法。同時(shí),向大家補(bǔ)充一下“類向?qū)А敝刑砑又底兞康耐暾^程。如果你覺得這篇教程有幫助,請(qǐng)為我投上寶貴的一票,謝謝!如果你對(duì)我寫的系列教程感興趣,就請(qǐng)“關(guān)注”我吧!
創(chuàng)建MFC對(duì)話框程序項(xiàng)目
1. 啟動(dòng)VS2017軟件,創(chuàng)建一個(gè)名為“MFCDemo5”的MFC對(duì)話框程序項(xiàng)目。
2. 在資源視圖中,打開對(duì)話框資源編輯器,刪除主對(duì)話框上的所有控件(注意:默認(rèn)控件一般是不需要的)。
3. 從工具欄中拖3個(gè)"Edit Control"到對(duì)話框中,然后調(diào)整它們的大小和位置。
添加控件值變量
4. 右鍵單擊第一個(gè)編輯框,然后打開“類向?qū)Т翱凇?,?IDC_EDIT1"控件添加一個(gè)私有的值變量"_edit1"。設(shè)置完畢后,點(diǎn)擊“類向?qū)Т翱凇敝械摹熬庉嫶a按鈕”查看代碼。
5. 根據(jù)之前的經(jīng)驗(yàn),以這種方式添加控件值變量。VS是不會(huì)在DoDataExchange函數(shù)中為我們添加功能代碼的。所以,打開"MFCDemo5Dlg.cpp"文件,手動(dòng)在DoDataExchange函數(shù)中添加關(guān)聯(lián)控件ID和控件值變量,以及檢測(cè)控件值變量的代碼。
控制輸入字符個(gè)數(shù)
6. 調(diào)試運(yùn)行代碼,在彈出的對(duì)話框中,向第一個(gè)編輯框中輸入字符。當(dāng)輸入字符超過6個(gè)后,就會(huì)輸不進(jìn)去了。這正是DDV_MaxChars函數(shù)在發(fā)揮作用。
7. 關(guān)閉對(duì)話框,退出調(diào)試并返回到對(duì)話框資源編輯頁中。再次通過“類向?qū)А睘榈?個(gè)編輯框添加成員變量。不同的是,這次保證“控件變量”為選中狀態(tài),然后在類別中選擇“Value”。同樣指定最大字符數(shù)為6。設(shè)置完畢后,點(diǎn)擊“完成”按鈕確認(rèn)添加。
自動(dòng)添加校驗(yàn)函數(shù)
8. 返回到“類向?qū)Т翱凇焙?,你?huì)發(fā)現(xiàn)按這種方式添加的控件值變量,其控件ID竟然不是“自定義變量”。點(diǎn)擊“編輯代碼按鈕”,打開"MFCDemo5Dlg.cpp"文件,查看DoDataExchange函數(shù),發(fā)現(xiàn)VS竟然幫我們寫好了DDX_Text和DDV_MaxChars函數(shù)。也就是說,我之前給大家介紹的取消“控件變量復(fù)選框”選中的做法,其實(shí)添加的只是一個(gè)自定義變量。
設(shè)置最大和最小值
9. 調(diào)試運(yùn)行代碼,在第一個(gè)和第二個(gè)編輯框中,輸入“12345678”。結(jié)果,由于DDV的作用,這兩個(gè)編輯框中輸入“123456”就無法輸入了。嗯,一切正常,關(guān)閉對(duì)話框返回資源編輯頁。
10. 繼續(xù)通過“類向?qū)А睘榈?個(gè)編輯框添加控件值變量,這次將最小值設(shè)置為“1000”,最大值設(shè)置為“1500”。然后點(diǎn)擊“完成按鈕”確認(rèn)添加。
限制輸入范圍
11. 返回到“類向?qū)А贝翱诤?,點(diǎn)擊“編輯代碼”按鈕關(guān)閉類向?qū)ВD(zhuǎn)到代碼文件中。查看DoDataExchange函數(shù)中新增的代碼,可以發(fā)現(xiàn)MFC通過DDV_MinMaxInt函數(shù)來限制控件值變量的最小和最大值。
12. 調(diào)試運(yùn)行代碼,在彈出對(duì)話框的第3個(gè)編輯框中輸入“155555555”。額?!似乎已經(jīng)超過最大值了。為什么沒起作用呢?關(guān)閉對(duì)話框,退出調(diào)試模式。
更新控件值
13. 切換到對(duì)話框編輯界面,從工具欄上拖動(dòng)一個(gè)“Button”控件到對(duì)話框中,然后雙擊該按鈕控件添加單擊事件響應(yīng)函數(shù)。在該函數(shù)中調(diào)用UpdateData(TRUE)函數(shù)更新控件值。
14. 再次調(diào)試運(yùn)行程序,在彈出對(duì)話框的第3個(gè)編輯框中輸入“155555555”。當(dāng)你點(diǎn)擊“Button1”按鈕時(shí),由于DDV_MinMaxInt函數(shù)的作用,它檢測(cè)到IDC_EDIT3中輸入的值超出了范圍,因此會(huì)彈出一個(gè)提示框,要求輸入1000至1500之間的整數(shù)。
限制字符個(gè)數(shù)
15. 關(guān)閉對(duì)話框程序,返回到對(duì)話框資源編輯器頁。從工具欄中拖動(dòng)一個(gè)“Combo Box”控件到對(duì)話框中。然后為其添加一個(gè)值變量并且指定輸入字符個(gè)數(shù)為2。
16. 再次調(diào)試運(yùn)行程序,在組合框控件中輸入“666666”,結(jié)果發(fā)現(xiàn)它輸入2個(gè)字符后,就不能再輸入了。與之前編輯框的反應(yīng)一致。