if (decimal)
 {
  input_dec+=(0/count);
  count*=10;
 }
 else input_int= input_int*10+0;
 value=input_int+input_dec;
 gcvt(value,10,buffer);
 m_Edit.SetWindowText((LPCTSTR)buffer); 
 UpdateData(false);
总共有10段类似的代码,但直接定义为函数又不行,怎么办
还有这段代码也觉得臃肿了,buffer是个字符串
gcvt(value,10,buffer);
m_Edit.SetWindowText((LPCTSTR)buffer);
UpdateData(false); 

解决方案 »

  1.   

    用带参数的宏定义方式
    #define
      

  2.   

    value=input_int+input_dec; 
    gcvt(value,10,buffer); 
    m_Edit.SetWindowText((LPCTSTR)buffer); 
    UpdateData(false);这里直接为编辑框控件定义一个float型的变量m_value就行了呗!
    m_value = input_int+input_dec;
    UpdateData(FALSE); 
      

  3.   

    如果是类似的代码而又不能定义成函数的话,你可以用带参数的宏!
    可以用
    if (decimal)
    {
    input_dec += (0 / count);
    count *= 10;
    }
    else
    input_int = input_int * 10 + 0; SetDlgItemInt(m_Edit_ID, input_int + input_dec);
    UpdateData(false);
      

  4.   

    宏定义出错了,这样不行,也没有教程讲宏体为多行代码时的宏定义
    #define INPUTNUMBER(num)
    if (decimal)
    {
    input_dec+=(num/count);
    count*=10;
    }
    else input_int= input_int*10+num;
    value=input_int+input_dec;
    gcvt(value,10,buffer);
    CEX_Calculator02Dlg::m_Edit=(LPCTSTR)buffer;
    UpdateData(false);
      

  5.   

    哦,原来要用\换行啊,用宏定义成功了。如果直接定义函数,CEX_Calculator02Dlg::m_Edit.SetWindowText((LPCTSTR)buffer); 和UpdateData(false); 会报错,大概是SetWindowText是一个静态函数啥的。把m_Edit改成CString,把CEX_Calculator02Dlg::m_Edit.SetWindowText((LPCTSTR)buffer),改成m_Edit=(LPCTSTR)buffer也错,本人菜鸟,哪个高手在看看如何通过函数简化代码