在写个数据统计的工具,其中有一部分是从一个对话框的输入框内读取输入的数据并进行计算。由于输入框很多,所以我想写个全局函数来实现数据读取功能:
int g_fn_SetValue(int nID)//Global Function
{
CString str;
GetDlgItemText(nID, str); return _tstoi(str);//因为输入的是数字,所以需要把CString转成int
}但是编译时报错:error C2660: 'GetDlgItemTextW' : function does not take 2 arguments但如果在输入框的响应函数里直接写就没问题,区别就是在GetDlgItemText里直接用了ID号:
void CalcDlg::OnEnChangeAtt()
{
CString str;
GetDlgItemText(IDC_ATT, str);
int i = _tstoi(str); //...
}说起来用后一种方法也没问题,复制粘贴花的时间也多不了几分钟,但我就是很想知道,为什么定义全局函数就不可以,我的错误在什么地方?
分不够还可以再加,还望前辈、高手们不吝赐教!

解决方案 »

  1.   

    放在CalcDlg,默认为CalcDlg的成员,相当于this->GetDlgItemText(IDC_ATT, str);
    而放在全局函数中??
      

  2.   

    UINT GetDlgItemText(
      HWND hDlg,       // handle to dialog box
      int nIDDlgItem,  // control identifier
      LPTSTR lpString, // pointer to buffer for text
      int nMaxCount    // maximum size of string
    );
    四个参数
      

  3.   

    噢,你说的对,放在CalcDlg里更加直观但是调用全局函数应该也没有问题吧?