大概的代码如下,IDC_EDIT1等等都是文本框。问题在于最后IDC_EDIT3的那个文本框除了头一位是正确的,后面都是乱码,请问怎么改进? int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);
SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2; itoa(num3,ch3,10); SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);
char ch1[10],ch2[10],ch3[10];
SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);
SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2; itoa(num3,ch3,10); SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);
另外 “将ch1, ch2, ch3都用memset 清空一下。” 感觉是必须。
我看你代码是从IDC_EDIT1 IDC_EDIT2中读取一个数字,那为何要用sendmessage?
何不用 getdlgitemint setdlgitemint?岂不是转换都省却了?
//申明成11位看看,再清空一下,保存字符串末尾为'\0'
char ch1[11],ch2[11],ch3[11];//变量定义感觉像字符,不像字符串数组
memset(ch1, 0x00, sizeof(ch1));
memset(ch2, 0x00, sizeof(ch2));
memset(ch3, 0x00, sizeof(ch3));
...SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);//确认该处是0吗?
默认的~好像是Unicode~不过我没检查过~
int num1,num2,num3; TCHAR ch1[10],ch2[10],ch3[10]; SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);
SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2); num1=_ttoi(ch1);
num2=_ttoi(ch2);
num3=num1+num2;
_itot(num3, ch3, 10);
SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);