1.Add # include < math.h & gt
2.為CCalculatorDlg類添加成員數據和成員函數。
雙數1,數字2;
int NumberState,OperationState
void cal();
並在CCalculatorDlg類的構造函數中添加NumberState = 1;
3.添加消息按鈕afx _ msg void OnNumberKey(UINT nID);
afx _ msg void OnOperationKey(UINT nID);
4.在CalculatorDlg.cpp文件中的begin _ MESSAGE _ MAP(cmy 1 DLG,cdialog)和END_MESSAGE_MAP()之間添加代碼。
ON _ COMMAND _ RANGE(IDC _ number 1,IDC_NUMBER10,OnNumberKey)
ON _ COMMAND _ RANGE(IDC _ number 11,IDC_NUMBER20,OnOperationKey)
5.為OnNumberKey和OnOperationKey的成員函數添加代碼。
void ccalculator DLG::OnNumberKey(UINT nID)
{
int n = 0;
開關(nID)
{
案例IDC _ number 1:n = 1;打破;
案例IDC _ number 2:n = 2;打破;
案例IDC _ number 3:n = 3;打破;
案例IDC _ number 4:n = 4;打破;
案例IDC _ number 5:n = 5;打破;
案例IDC _ number 6:n = 6;打破;
案例IDC _ number 7:n = 7;打破;
案例IDC _ number 8:n = 8;打破;
案例IDC _ number 9:n = 9;打破;
案例IDC _ number 10:n = 0;打破;
}
if(數字狀態==1)
{
m _ result = m _ result * 10+n;
number 1 = m _ result;
update data(FALSE);//更新編輯框中的值
}
其他
{
m _ result = m _ result * 10+n;
number2 = m _ result
update data(FALSE);
}
}
void ccalculator DLG::OnOperationKey(UINT nID)
{
開關(nID)
{
案例IDC _ number 13:///"按鈕
operation state = 1;
update data(FALSE);
m _ result = 0;
number state = 2;
打破;
案例IDC _ number 14://* "按鈕
operation state = 2;
update data(FALSE);
m _ result = 0;
number state = 2;
打破;
案例IDC_NUMBER15: // "+"按鈕
operation state = 3;
update data(FALSE);
m _ result = 0;
number state = 2;
打破;
案例IDC _ number 16://-"按鈕
operation state = 4;
update data(FALSE);
m _ result = 0;
number state = 2;
打破;
case IDC _ number 17://“C”按鈕,用於撤銷,如果不需要可以刪除。
number 1 = number 2 = m _ result = 0;
update data(FALSE);
NumberState = 1;
打破;
案例IDC_NUMBER20: //" "按鈕
cal();//調用cal成員函數
打破;
}
}
6.為成員函數cal()添加代碼
void CCalculatorDlg::cal()
{
開關(操作狀態)
{
案例1:
m _ result =(double)number 1/number 2;
update data(FALSE);//更新編輯框中的結果
number 1 = m _ result;//將本次運算的結果作為下壹次運算的第壹個操作數。
number state = 2;//下次輸入的數字作為第二個操作數。
打破;
案例二:
m _ result = number 1 * number 2;
update data(FALSE);//更新編輯框中的結果
number 1 = m _ result;
number state = 2;
打破;
案例三:
m _ result = number 1+number 2;
update data(FALSE);//更新編輯框中的結果
number 1 = m _ result;
number state = 2;
打破;
案例4:
m _ result = number 1-number 2;
update data(FALSE);//更新編輯框中的結果
number 1 = m _ result;
number state = 2;
打破;
}
operation state = 0;
}
註意按鈕的ID號要和程序裏的ID號壹致!!!!否則,單擊某些按鈕時將不會響應...