写了一个程序,要从Edit Control中获取一个字符串,这个字符串只是数字,然后对字符串进行强制转换成int类型,然后对这个int值进行一些运算,完了再通过Edit Control显示出来。
现在遇到的问题是,如何对计算完的int值进行类型转换,使得能在Edit Control显示呢?用的方法是SetDlgItemText,第二个参数的类型是LPTSTR,不知道该怎么将int类型转换成LPTSTR?还有就是对上面的LPTSTR直接进行强制类型转换成int会不会有什么问题?用atoi函数不行……
再问下,就是怎么对LPTSR类型变量初始化?我用下面方法有没有问题?
LPTSTR buf = new TCHAR[5];
整体的思路如下:LPTSTR buf = new TCHAR[5];
int iStatus = GetDlgItemText(IDC_EDIT2, buf, 5);
int iOriginal = (int)buf;然后就不知道该怎么写了……

解决方案 »

  1.   

    (int)buf获取的是一个地址,还是_stprintf,_ttoi等比较保险
      

  2.   

    int iOriginal = (int)buf;
    这一句是不行的。
    看你前面用的是tchar,这一句应该为
    int iOriginal = _ttoi(buf);你的意思是把iOriginal处理一下,然后显示到对话框中,那就用sprintf吧。
    _stprintf(buf, _TEXT("%d"), iOriginal);
    SetDlgItemText(IDC_EDIT2, buf);字符串的初始化的确比较麻烦,我一般采用两种方式处理。
    1) 
    const int nMaxString = 1024;
    TCHAR buff[nMaxString];
    只要字符串不超过1024的长度就没问题,不然就缓冲区溢出了。
    2) 使用stl的string类。
    stl中有两个类,一个是一般的string,另一个是宽字节的wstring,但没有像TCHAR一样自动的tstring。
    我一般自定义一个tstring,方法如下。
    typedef basic_string<TCHAR, char_traits<TCHAR>, allocator<TCHAR> > tstring;
    呵呵,这个tstring用起来就很方便了。
      

  3.   

    不是可以直接把控件关联变量设成int吗
      

  4.   

    首先确定你的程序是基于多字节而不是Unicode?
    那么LPTSTR = char*  ,LPCTSTR= const char*
    那么char*和int的转换是不是很简单:
    char* to int:  atoi
    int to char*:  itoa  或者 sprintf
      

  5.   

    对!有一个方法是GetDlgItem,直接就获得Int类型了