GetDlgItemText的用法

来源:互联网 发布:好看的泳衣知乎 编辑:程序博客网 时间:2024/06/01 08:14

intGetDlgItemText(intnID,LPTSTRlpStr,intnMaxCount)const;

int GetDlgItemText( intnID, 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( intnID, 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重载了指针吧。
原创粉丝点击