




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 第11講 進制轉(zhuǎn)換計算器 2 3本講主要內(nèi)容1. 單選按鈕控件2. 復(fù)選框控件41. 單選按鈕控件 單選按鈕時一個圓圈和文本標(biāo)簽組合,當(dāng)它被選中時,圓圈中就標(biāo)上一個黑點。單選按鈕通常是分組使用,同一組的單選按鈕具有互斥性,即某一單選按鈕被選中會清除同組內(nèi)其他單選按鈕的選中狀態(tài)。 通過將某一單選按鈕Properties中General選項卡中勾選Group標(biāo)識某一組開始,直到下一個Group標(biāo)識出現(xiàn),其順序是Tab鍵順序(單擊菜單Layout|Tab Order命令)。 51. 單選按鈕控件操作步驟:(1)打開Integer Calculator工程,添加2個單選 按 鈕 , 如 下 圖 所
2、 示 , 其 I D 值 分 別 為IDC_RADIODEC和IDC_RADIOOCT。62. 單選按鈕控件(2)選中IDC_RADIODEC控件Properties中General選項卡中Group選項。(3)打開ClassWizard的Member Variables選項卡,為IDC_RADIODEC添加關(guān)聯(lián)變量m _ n H e x , 如 下 圖 所 示 , 并 在CIntegerCalculatorDlg類的構(gòu)造函數(shù)中將其初始值改為0,表示10進制為默認(rèn)選項。 。 71. 單選按鈕控件81. 單選按鈕控件(4)為打開ClassWizard的Message Maps選項 卡 , 為 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得到按鈕控件對象的指針p8-EnableWindow(TRUE); /使按鈕可用CButton *p9 = (CButton*)GetDlgItem(IDC_B9);p9-EnableWindow(TRUE);transf
4、orm();/進制轉(zhuǎn)換其中GetDlgItem()函數(shù)的功能是根據(jù)控件ID獲取對話框中控件的句柄,其函數(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進制單選按鈕被選中m_nValue = octToDec(m_nValue);/將8進制轉(zhuǎn)換為10進制else/8進制單選按鈕被選中char s830;itoa(m_nValue,s8,8);/將10進制轉(zhuǎn)換為8進制m_nValue = atoi(s8);UpdateData(FALSE);/更新界面,顯示轉(zhuǎn)換后結(jié)果 octToDec()函數(shù)為自定義函數(shù)
6、,功能是將8進制數(shù)值轉(zhuǎn)換為10進制數(shù)值 同樣10進制轉(zhuǎn)換為8進制,讀者也可以參照這個思路編寫一個轉(zhuǎn)換函數(shù),但為了讓讀者能夠更多地學(xué)習(xí)知識點,采用系統(tǒng)中存在函數(shù)進行轉(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進制、8進制、10進制和16進制。 atoi()函數(shù)的功能是將字符串轉(zhuǎn)換為整數(shù),轉(zhuǎn)換過稱謂跳過前面的空格字符,直到遇上數(shù)字或正負(fù)符號才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(/0)才結(jié)
7、束轉(zhuǎn)換,并將結(jié)果返回。其函數(shù)原型為:int atoi(const char *nptr);其中參數(shù)含義為:nptr:待轉(zhuǎn)換字符串。111. 單選按鈕控件 其中octToDec()函數(shù)為自定義函數(shù),功能是將10進制數(shù)值轉(zhuǎn)換為8進制數(shù)值,函數(shù)代碼如下:int CIntegerCalculatorDlg:octToDec(int value)int result=0;/結(jié)果變量int num = 0;/次冪變量while (value != 0) int low = value%10;/取個位數(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時)如果按鈕是其它風(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)為了使對話框在初始運行時保持
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)編譯、鏈接、運行。203. 補充案例【例【例7
11、-9】 世界杯知識小測驗該問卷調(diào)查包括3道題目,兩道單選題,一道多選題,單選題選項采用單選按鈕控件實現(xiàn),多選題選項采用復(fù)選框控件實現(xiàn)。213. 補充案例實現(xiàn)步驟:(1)創(chuàng)建基于對話框的Survey工程。(2)刪除對話框中原有的“確定”、“取消”按鈕和靜態(tài)文本控件,然后添加4個單選按鈕控件、3個復(fù)選框控件、4個靜態(tài)文本控件和1個按鈕,并修改Caption。223. 補充案例(3)修改控件ID,單選按鈕控件ID依次為IDC_EURO、IDC_AFRI、IDC_SPAIN、IDC_HOLLAND,復(fù)選框控件ID依次為IDC_ITALY、IDC_FRANCE、IDC_BRAZIL,按鈕控件ID為IDC
12、_SUBMIT。233. 補充案例(4)修改控件的Tab Order,單擊菜單Layout|Tab Order命令,通過鼠標(biāo)點擊修改為下圖所示順序。243. 補充案例(5)將控件IDC_EURO和IDC_SPAIN的General選項卡中Group選項選中。(6)修改對話框Caption為“世界杯知識小測驗”。(7)為控件添加關(guān)聯(lián)變量,如下圖所示。253. 補充案例263. 補充案例(8)為按鈕控件IDC_SUBMIT添加消息響應(yīng)函數(shù),單擊菜單View|ClassWizard命令,在Message Maps選項卡中為IDC_SUBMIT按鈕添加BN_CLICKED消息響應(yīng)函數(shù)OnSubmit()。273. 補充案例(9)在函數(shù)OnSubmit()中添加代碼如下:void CSurveyDlg:OnSubmit() UpdateData(TRUE);/獲得用戶操作if(m_nHost = -1 | m_nChampion = -1) /檢查題目是否做完AfxMessageBox(題目未完成,請?zhí)顚懲暾☆}目未完成,請?zhí)顚懲暾?;return;int nCount = 0; /答對題目數(shù)量283. 補充案例if(m_nHost = 1) /第一題答案為非洲nCount+;if(m_nChampion = 0) /第二題答案為西班牙nCount+;/第三題答案為意大利
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司晉升體系培訓(xùn)
- 保健品原料供應(yīng)鏈金融合作合同
- 拆遷改造項目二手房買賣風(fēng)險評估與風(fēng)險管理協(xié)議
- 幼兒一日生活教育
- 出租車租賃車輛保險代理合同
- 零售行業(yè)財務(wù)審計與優(yōu)化建議合同
- 誠意金合作開發(fā)旅游項目保證金合同
- 車輛質(zhì)押借款合同范本集錦
- 廠房買賣合同標(biāo)準(zhǔn)文本(含產(chǎn)權(quán)登記)
- 采石場承包土地資源流轉(zhuǎn)與開發(fā)合同
- 鵝媽媽的故事課件
- 物業(yè)防盜應(yīng)急預(yù)案
- 2024用于水泥和混凝土中的焚燒飛灰
- 鄭開馬拉松小馬志愿者培訓(xùn)
- 超市會議內(nèi)容記錄
- 23秋國家開放大學(xué)《液壓與氣壓傳動》形考任務(wù)1-2參考答案
- 煤礦架空乘人裝置安裝檢驗報告
- 自來水廠操作規(guī)程手冊
- 《路由交換技術(shù)》部署和實施企業(yè)網(wǎng)絡(luò)互聯(lián)(任務(wù)2)
- 工程量清單及招標(biāo)控制價編制服務(wù)采購實施方案(技術(shù)標(biāo))
- 汽修廠配件材料管理制度
評論
0/150
提交評論