谢谢^_^计算器添加按钮,急用...帮帮忙
目前我做的计算器只有数字键0-9和+、-、×、/、sin、cos、tan、x^2按钮,我想添一个小数点和一个阶乘的按钮,希望有谁可以帮我解决一下,具体说一下操作和代码,谢谢啊
问题点数:50、回复次数:5Top
1 楼shl6894(越学越无知)回复于 2006-12-01 08:27:25 得分 0
加小数点的方法:
void CxxxDlg::AdvButton7() //按到数字7
{
// TODO: Add your control notification handler code here
m_strBegin=m_strBegin+"7";//需要显示的字符
if(!m_IsCheckPoint)//点到小数点
m_DspEdit.OnDisplay(m_strBegin+".");
else
m_DspEdit.OnDisplay(m_strBegin);
}
其中m_DspEdit是CEDIT的派生类对象,OnDisplay函数实现如下:
void CAdvEdit::OnDisplay(LPCTSTR lpszStr)
{
m_Caption=lpszStr;
OnDraw();
}
void CAdvEdit::OnPaint()
{
CPaintDC dc(this); // device context for painting
OnDraw();
// TODO: Add your message handler code here
// Do not call CEdit::OnPaint() for painting messages
}
void CAdvEdit::OnDraw()
{
CRect rect;
GetClientRect(&rect);
CDC *pDC=GetDC();
pDC->SetBkMode(TRANSPARENT);
CBrush *pBrush=new CBrush(RGB(255,255,255));
pDC->FillRect(&rect,pBrush);
pDC->SetTextColor(RGB(92,92,92));
pDC->DrawText(m_Caption,rect,DT_SINGLELINE|DT_VCENTER|DT_RIGHT);
}Top
2 楼shl6894(越学越无知)回复于 2006-12-01 08:30:19 得分 0
这个是C的阶乘算法,可以支持大数,参考一下写到MFC里就ok了吧?
#include <stdio.h>
void main()
{
int a = 10000;
int result[50000];
result[1] = 1;
int number_count = 1;
int number_carry = 0;
int number_temp = 0;
for(int i = 2; i <= a; i ++)
{
for(int j = 1; j <= number_count; j ++)
{
number_temp = result[j] * i + number_carry;
result[j] = number_temp % 10;
number_carry = (int)(number_temp / 10);
}
while(number_carry)
{
number_count ++;
result[number_count] = (number_carry % 10);
number_carry = (int)(number_carry / 10);
}
}
{
for(int i = number_count; i >=1; --i)
{
printf("%d",result[i]);
}
printf(" ");
}
}
Top
3 楼shawnwan()回复于 2006-12-01 08:30:38 得分 0
顶Top
4 楼venny52ws()回复于 2006-12-01 13:18:52 得分 0
谢谢啊,但是我还是不知道该怎么具体操作,代码填到那里我都不知道,我的按钮分为数字和操作键,小数点属于哪一种??小数点实现代码独立填加吗??我之前的实现代码大概是这样的:
void CCalculatorDlg::OnNumberKey(UINT nID)
{
int n=0;
switch(nID)
{
case IDC_NUMBER1:n=1;break;
...
case IDC_NUMBER0:n=0;break;
}
if(NumberState==1)
{
m_number=m_number*10+n;
number1=m_number;
UpdateData(FALSE);
}
else
{
m_number=m_number*10+n;
number2=m_number;
UpdateData(FALSE);
}//处理除数为零
if(Zero==FALSE)
{
Zero=TRUE;
m_Zero.ShowWindow(SW_SHOW);
}
}
void CCalculatorDlg::OnOperationKey(UINT nID)//响应操作键按下
{
switch(nID)
{
case IDC_NUMBER_PlusMinus: m_number=-m_number;
if(NumberState==1)
number1=m_number;
else
number2=m_number;
UpdateData(FALSE);
break;
case IDC_NUMBER_BackSpace:
case IDC_NUMBER_Divide: cal();//如果连续计算
case IDC_NUMBER_Subtract: cal();//如果连续计算
OperationState=4;
case IDC_NUMBER_Clear:
case IDC_NUMBER_Sqrt:
case IDC_NUMBER_Derivative:
case IDC_NUMBER_Equal:
cal();//计算derivative
case IDC_NUMBER_Sin:
number1=m_number=sin(number1);
UpdateData(FALSE);
break;
case IDC_NUMBER_Square:
;
}
}
void CCalculatorDlg::cal()
那么小数点的实现代码我应该在那里添加????十分感谢啊^_^谢谢^_^帮忙给回答一下吧
Top
5 楼venny52ws()回复于 2006-12-02 22:09:38 得分 0
要添加那个按钮,应该在头文件还是实现文件里面填??在文件里面应该在那一部分填
Top





