CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  Visual C++ 资源

谢谢^_^计算器添加按钮,急用...帮帮忙

楼主venny52ws()2006-12-01 00:21:09 在 VC/MFC / Visual C++ 资源 提问

目前我做的计算器只有数字键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

相关问题

关键词

得分解答快速导航

  • 帖主:venny52ws

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo