版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 第11講 進(jìn)制轉(zhuǎn)換計(jì)算器 2 3本講主要內(nèi)容1. 單選按鈕控件2. 復(fù)選框控件41. 單選按鈕控件 單選按鈕時(shí)一個(gè)圓圈和文本標(biāo)簽組合,當(dāng)它被選中時(shí),圓圈中就標(biāo)上一個(gè)黑點(diǎn)。單選按鈕通常是分組使用,同一組的單選按鈕具有互斥性,即某一單選按鈕被選中會(huì)清除同組內(nèi)其他單選按鈕的選中狀態(tài)。 通過將某一單選按鈕Properties中General選項(xiàng)卡中勾選Group標(biāo)識(shí)某一組開始,直到下一個(gè)Group標(biāo)識(shí)出現(xiàn),其順序是Tab鍵順序(單擊菜單Layout|Tab Order命令)。 51. 單選按鈕控件操作步驟:(1)打開Integer Calculator工程,添加2個(gè)單選 按 鈕 , 如 下 圖 所
2、 示 , 其 I D 值 分 別 為IDC_RADIODEC和IDC_RADIOOCT。62. 單選按鈕控件(2)選中IDC_RADIODEC控件Properties中General選項(xiàng)卡中Group選項(xiàng)。(3)打開ClassWizard的Member Variables選項(xiàng)卡,為IDC_RADIODEC添加關(guān)聯(lián)變量m _ n H e x , 如 下 圖 所 示 , 并 在CIntegerCalculatorDlg類的構(gòu)造函數(shù)中將其初始值改為0,表示10進(jìn)制為默認(rèn)選項(xiàng)。 。 71. 單選按鈕控件81. 單選按鈕控件(4)為打開ClassWizard的Message Maps選項(xiàng) 卡 , 為 I
3、 D C _ R A D I O D E C 和IDC_RADIOOCT添加BN_CLICKED消息,生成OnRadiodec()和OnRadiooct()函數(shù),并添加如下代碼 : 91. 單選按鈕控件void CIntegerCalculatorDlg:OnRadiodec() CButton *p8 = (CButton*)GetDlgItem(IDC_B8);/通過ID得到按鈕控件對(duì)象的指針p8-EnableWindow(TRUE); /使按鈕可用CButton *p9 = (CButton*)GetDlgItem(IDC_B9);p9-EnableWindow(TRUE);transf
4、orm();/進(jìn)制轉(zhuǎn)換其中GetDlgItem()函數(shù)的功能是根據(jù)控件ID獲取對(duì)話框中控件的句柄,其函數(shù)聲明為:CWnd* GetDlgItem(int nID) const;其中nID為控件的ID值。 而EnableWindow()函數(shù)是CWnd類的成員函數(shù),功能是使窗口允許或禁止,其函數(shù)聲明為:BOOL EnableWindow( BOOL bEnable = TRUE );其中bEnable為TRUE,則窗口被允許,為FALSE,則窗口將被禁止。 101. 單選按鈕控件(5)編寫transform()函數(shù),在IntegerCalculatorDlg.h文件中添加函數(shù)聲明void tran
5、sform();,在IntegerCalculatorDlg.cpp文件中添加如下代碼。 void CIntegerCalculatorDlg:transform()UpdateData(TRUE);/獲得數(shù)據(jù)if(m_nHex = 0)/10進(jìn)制單選按鈕被選中m_nValue = octToDec(m_nValue);/將8進(jìn)制轉(zhuǎn)換為10進(jìn)制else/8進(jìn)制單選按鈕被選中char s830;itoa(m_nValue,s8,8);/將10進(jìn)制轉(zhuǎn)換為8進(jìn)制m_nValue = atoi(s8);UpdateData(FALSE);/更新界面,顯示轉(zhuǎn)換后結(jié)果 octToDec()函數(shù)為自定義函數(shù)
6、,功能是將8進(jìn)制數(shù)值轉(zhuǎn)換為10進(jìn)制數(shù)值 同樣10進(jìn)制轉(zhuǎn)換為8進(jìn)制,讀者也可以參照這個(gè)思路編寫一個(gè)轉(zhuǎn)換函數(shù),但為了讓讀者能夠更多地學(xué)習(xí)知識(shí)點(diǎn),采用系統(tǒng)中存在函數(shù)進(jìn)行轉(zhuǎn)換。 itoa()函數(shù)的功能是將整數(shù)轉(zhuǎn)換為字符串,其原型為:char *itoa(int value,char *string,int radix);其中參數(shù)含義為:value:待轉(zhuǎn)換整數(shù)。string:轉(zhuǎn)換后字符串指針radix:轉(zhuǎn)換基數(shù),可以是2進(jìn)制、8進(jìn)制、10進(jìn)制和16進(jìn)制。 atoi()函數(shù)的功能是將字符串轉(zhuǎn)換為整數(shù),轉(zhuǎn)換過稱謂跳過前面的空格字符,直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(shí)(/0)才結(jié)
7、束轉(zhuǎn)換,并將結(jié)果返回。其函數(shù)原型為:int atoi(const char *nptr);其中參數(shù)含義為:nptr:待轉(zhuǎn)換字符串。111. 單選按鈕控件 其中octToDec()函數(shù)為自定義函數(shù),功能是將10進(jìn)制數(shù)值轉(zhuǎn)換為8進(jìn)制數(shù)值,函數(shù)代碼如下:int CIntegerCalculatorDlg:octToDec(int value)int result=0;/結(jié)果變量int num = 0;/次冪變量while (value != 0) int low = value%10;/取個(gè)位數(shù)int mul = 1;for(int i=0;iGetCheck()CButton *pDec = (C
8、Button*)GetDlgItem(IDC_RADIODEC);pDec-EnableWindow(TRUE);CButton *pOct = (CButton*)GetDlgItem(IDC_RADIOOCT);pOct-EnableWindow(TRUE);GetCheck()函數(shù)的功能是獲得復(fù)選框的選中狀態(tài),其函數(shù)聲明為:int GetCheck() const;其返回值為0:按鈕處于未選中狀態(tài)。1:按鈕處于選中狀態(tài)。2:按鈕狀態(tài)不定(僅當(dāng)按鈕風(fēng)格為BS_3STATE或BS_AUTO3STATE時(shí))如果按鈕是其它風(fēng)格,則返回0。為了代碼清晰,系統(tǒng)為其做了宏定義:#define BST_
9、UNCHECKED 0 x0000#define BST_CHECKED 0 x0001#define BST_INDETERMINATE 0 x0002 172. 復(fù)選框按鈕(3)在OnCheckhex ()函數(shù)中添加如下代碼: :elseCButton *pDec = (CButton*)GetDlgItem(IDC_RADIODEC);pDec-EnableWindow(FALSE);CButton *pOct = (CButton*)GetDlgItem(IDC_RADIOOCT);pOct-EnableWindow(FALSE);182. 復(fù)選框按鈕(4)為了使對(duì)話框在初始運(yùn)行時(shí)保持
10、正常狀態(tài),需在OnInitDialog()函數(shù)中添加如下代碼:BOOL CIntegerCalculatorDlg:OnInitDialog()SetIcon(m_hIcon, FALSE);/ Set small iconCButton *pDec = (CButton*)GetDlgItem(IDC_RADIODEC);pDec-EnableWindow(FALSE);CButton *pOct = (CButton*)GetDlgItem(IDC_RADIOOCT);pOct-EnableWindow(FALSE);192. 復(fù)選框按鈕(5)編譯、鏈接、運(yùn)行。203. 補(bǔ)充案例【例【例7
11、-9】 世界杯知識(shí)小測(cè)驗(yàn)該問卷調(diào)查包括3道題目,兩道單選題,一道多選題,單選題選項(xiàng)采用單選按鈕控件實(shí)現(xiàn),多選題選項(xiàng)采用復(fù)選框控件實(shí)現(xiàn)。213. 補(bǔ)充案例實(shí)現(xiàn)步驟:(1)創(chuàng)建基于對(duì)話框的Survey工程。(2)刪除對(duì)話框中原有的“確定”、“取消”按鈕和靜態(tài)文本控件,然后添加4個(gè)單選按鈕控件、3個(gè)復(fù)選框控件、4個(gè)靜態(tài)文本控件和1個(gè)按鈕,并修改Caption。223. 補(bǔ)充案例(3)修改控件ID,單選按鈕控件ID依次為IDC_EURO、IDC_AFRI、IDC_SPAIN、IDC_HOLLAND,復(fù)選框控件ID依次為IDC_ITALY、IDC_FRANCE、IDC_BRAZIL,按鈕控件ID為IDC
12、_SUBMIT。233. 補(bǔ)充案例(4)修改控件的Tab Order,單擊菜單Layout|Tab Order命令,通過鼠標(biāo)點(diǎn)擊修改為下圖所示順序。243. 補(bǔ)充案例(5)將控件IDC_EURO和IDC_SPAIN的General選項(xiàng)卡中Group選項(xiàng)選中。(6)修改對(duì)話框Caption為“世界杯知識(shí)小測(cè)驗(yàn)”。(7)為控件添加關(guān)聯(lián)變量,如下圖所示。253. 補(bǔ)充案例263. 補(bǔ)充案例(8)為按鈕控件IDC_SUBMIT添加消息響應(yīng)函數(shù),單擊菜單View|ClassWizard命令,在Message Maps選項(xiàng)卡中為IDC_SUBMIT按鈕添加BN_CLICKED消息響應(yīng)函數(shù)OnSubmit()。273. 補(bǔ)充案例(9)在函數(shù)OnSubmit()中添加代碼如下:void CSurveyDlg:OnSubmit() UpdateData(TRUE);/獲得用戶操作if(m_nHost = -1 | m_nChampion = -1) /檢查題目是否做完AfxMessageBox(題目未完成,請(qǐng)?zhí)顚懲暾☆}目未完成,請(qǐng)?zhí)顚懲暾?;return;int nCount = 0; /答對(duì)題目數(shù)量283. 補(bǔ)充案例if(m_nHost = 1) /第一題答案為非洲nCount+;if(m_nChampion = 0) /第二題答案為西班牙nCount+;/第三題答案為意大利
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能城市建設(shè)項(xiàng)目承包合同4篇
- 2025年度智能水電安裝與維護(hù)一體化承包合同范文4篇
- 2024版廣告合同購(gòu)銷
- 2025年度建筑節(jié)能環(huán)保材料研發(fā)與應(yīng)用合同2篇
- 2025年度企業(yè)內(nèi)部采購(gòu)人員廉潔自律合作協(xié)議3篇
- 2025年度特種車輛充電樁定制與安裝合同4篇
- 2024鐵路客運(yùn)服務(wù)合同范本3篇
- 2025年度智慧城市建設(shè)項(xiàng)目承包合同規(guī)范3篇
- 2025年度智能農(nóng)業(yè)化肥代銷合作協(xié)議范本4篇
- 中國(guó)藍(lán)寶石襯底材料行業(yè)市場(chǎng)調(diào)查研究及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 2023年上海英語高考卷及答案完整版
- 西北農(nóng)林科技大學(xué)高等數(shù)學(xué)期末考試試卷(含答案)
- 金紅葉紙業(yè)簡(jiǎn)介-2 -紙品及產(chǎn)品知識(shí)
- 《連鎖經(jīng)營(yíng)管理》課程教學(xué)大綱
- 《畢淑敏文集》電子書
- 頸椎JOA評(píng)分 表格
- 員工崗位能力評(píng)價(jià)標(biāo)準(zhǔn)
- 定量分析方法-課件
- 朱曦編著設(shè)計(jì)形態(tài)知識(shí)點(diǎn)
- 110kV變電站工程預(yù)算1
- 某系統(tǒng)安全安全保護(hù)設(shè)施設(shè)計(jì)實(shí)施方案
評(píng)論
0/150
提交評(píng)論