GetDlgItemText的用法

intGetDlgItemText(intnID,LPTSTRlpStr,intnMaxCount)const;

int GetDlgItemText( int nID, CString& rString ) const;

下面就通过两条途径来实现:

1、第一种方法:intGetDlgItemText(intnID,LPTSTRlpStr,intnMaxCount)const;

       int num1,num2,num3;
       CString ch1,ch2,ch3;
       GetDlgItemText(IDC_EDIT1,ch1.GetBuffer(10),10);
       GetDlgItemText(IDC_EDIT2,ch2.GetBuffer(10),10);
       num1=_wtoi(ch1);
       num2=_wtoi(ch2);
       num3=num1+num2;
       _itow(num3,ch3.GetBuffer(10),10);
       SetDlgItemText(IDC_EDIT3,ch3.GetBuffer(10));
      ch1.ReleaseBuffer(10);
      ch2.ReleaseBuffer(10);
      ch3.ReleaseBuffer(10);

说明:

     1)本来没有必要这么麻烦,因为在创建这个工程的时候勾选了Unicode支持,程序支持了宽字符,因此在类型转换的时候遇到了很多新问题,因此,如果不是必须,可以在创建工程的时候去掉Unicode支持。不加Unicode支持的代码如下,不用CString而用了char数组。

        int num1,num2,num3;
       char ch1[10],ch2[10],ch3[10];
       GetDlgItemText(IDC_EDIT1,ch1,10);
       GetDlgItemText(IDC_EDIT2,ch2,10);
       num1=atoi(ch1);
       num2=atoi(ch2);
       num3=num1+num2;
       itoa(num3,ch3,10);
       SetDlgItemText(IDC_EDIT3,ch3);

      2)在用GetDlgItem()的时候,曾经用了如下代码:

       GetDlgItemText(IDC_EDIT1,ch1.GetBuffer(ch1.GetLength()),((ch1.GetLength())));

其中GetBuffer()的作用主要是获得LPTSTR类型,GetLength()是为了获得编辑框中字符的长度,貌似没有问题的代码,在运行的时候却出现了问题。在Debug模式下,总是出现溢出,但在Realese模式下反而工作正常。经过测试,发现 ch1.GetLength()的值为0,说明Ch1.GetBuffer()只是取得了ch1的指针,但只有在执行了GetDlgItemText()执行后才能获得内容的长度。

     3atoi()_wtoi()_ttoi()      itoa()_itow()

atoi()函数和itoa()函数是ANSI下的函数,分别实现字符型与整型数据之间的互换;

_wtoi()_itow()函数是Unicode下的函数,功能也是实现字符型与整型数据之间的互换;

另外,_wtoi()_ttoi()功能相同,都是实现字符型向整型之间的转换。

2、第二种方法:int GetDlgItemText( int nID, CString& rString ) const;

      int num1,num2,num3;
      CString ch1,ch2,ch3;
      GetDlgItemText(IDC_EDIT1,ch1);
      GetDlgItemText(IDC_EDIT2,ch2);
      num1=_wtoi(ch1);
      num2=_wtoi(ch2);
      num3=num1+num2;
      _itow(num3,ch3.GetBuffer(10),10);
      SetDlgItemText(IDC_EDIT3,ch3.GetBuffer(10));
      ch3.ReleaseBuffer(10);

     注意:虽然 GetDlgItemText ()的第二个参数是指向 CString 的指针,但在定义的时候只要定义一个 CString 类型的变量即可,可能是 CString 重载了指针吧。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值