void CTestDlg::OnClickedBtnSum()
{
// TODO: Add your control notification handler code here
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
GetDlgItem(IDC_EDIT1) ->GetWindowText(ch1, 10);
问题一:“->”处提示错误,信息如下,
1 IntelliSense: no instance of overloaded function "CWnd::GetWindowTextW" matches the argument list c:\users\administrator.pc-20110905onbv\desktop\demo\vc\dialog\mybole\mybole\testdlg.cpp 102 23 Mybole
“10”处提示错误,信息如下:
2 IntelliSense: too many arguments in function call c:\users\administrator.pc-20110905onbv\desktop\demo\vc\dialog\mybole\mybole\testdlg.cpp 102 43 Mybole
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
num1=atoi(ch1);
num2=atoi(ch2);
num3=atoi(ch3);
itoa(num3,ch3,10);
GetDlgItem(IDC_EDIT3)->SetWindowText( ch3);
问题二:“ch3”处提示错误,信息如下:
5 IntelliSense: argument of type "char *" is incompatible with parameter of type "LPCTSTR" c:\users\administrator.pc-20110905onbv\desktop\demo\vc\dialog\mybole\mybole\testdlg.cpp 108 39 Mybole
如果将“ch3”改为“_T(ch3)”,则会提示错误:
5 IntelliSense: identifier "Lch3" is undefined c:\users\administrator.pc-20110905onbv\desktop\demo\vc\dialog\mybole\mybole\testdlg.cpp 108 39 Mybole
这是怎么回事,应该怎样修改???
}
问题三:VS2010智能提示方法“SetWindowTextW”而不是“GetWindowText”,为什么???两者之间有什么样的差别呢???
13 个解决方案
#1
把你的char换成TCHAR
#2
下面的atoi()这些函数也需要修改_ttoi();
#3
你F12找一下SetWindowText的定义应该会发现其实它是根据工程所用字符集来调用SetWindowTextW或SetWindowTextA,而xp以上系统内部只有SetWindowTextW一个函数,SetWindowTextA也只是把参数转换后再调用SetWindowTextW而已
#4
你看你的编译环境是什么
多字节,还是Unicode。。
多字节,还是Unicode。。
#5
int num1,num2,num3;
TCHAR ch1[10],ch2[10],ch3[10];
GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
num1=_wtoi(ch1);
num2=_wtoi(ch2);
num3=_wtoi(ch3);
_itow(num3,ch3,10);
GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);
#6
编译环境用的是VS2010。。。
为什么要用“TCHAR”???
“_wtoi”中“_w”是什么意思???
“_itow”中为什么要用“_”呢???
#7
#8
你把工程属性改成多字节字符集
#9
编译环境中有个项目属性其中可以设置Unicode字符集和多字节字符集
Unicode对应TCHAR
多字节对应char
对于函数来说一般都有最后带W的是对应Unicode 最后带A的是对应多字节
比如SetWindowTextW 这个函数就是对应Unicode 他的输入参数就需要是TCHAR
Unicode对应TCHAR
多字节对应char
对于函数来说一般都有最后带W的是对应Unicode 最后带A的是对应多字节
比如SetWindowTextW 这个函数就是对应Unicode 他的输入参数就需要是TCHAR
#10
char * 和 lpctstr 可不一应哦,需要转化的。
#11
“LRESULT”是什么类型,返回“0”可以吗???
LRESULT CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
//取出接收到的数据
CString str=(char*)lParam;
CString strTemp;
//获得已有数据
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
//显示所有接收到的数据
SetDlgItemText(IDC_EDIT_RECEV,str);
return 0;
}
LRESULT CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
//取出接收到的数据
CString str=(char*)lParam;
CString strTemp;
//获得已有数据
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
//显示所有接收到的数据
SetDlgItemText(IDC_EDIT_RECEV,str);
return 0;
}
#12
“LRESULT”是什么类型,返回“0”可以吗???
LRESULT CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
//取出接收到的数据
CString str=(char*)lParam;
CString strTemp;
//获得已有数据
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
//显示所有接收到的数据
SetDlgItemText(IDC_EDIT_RECEV,str);
return 0;
}
LRESULT CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
//取出接收到的数据
CString str=(char*)lParam;
CString strTemp;
//获得已有数据
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
//显示所有接收到的数据
SetDlgItemText(IDC_EDIT_RECEV,str);
return 0;
}
#13
找本windows 编程序书看看,也是很不错的选择了。
#1
把你的char换成TCHAR
#2
下面的atoi()这些函数也需要修改_ttoi();
#3
你F12找一下SetWindowText的定义应该会发现其实它是根据工程所用字符集来调用SetWindowTextW或SetWindowTextA,而xp以上系统内部只有SetWindowTextW一个函数,SetWindowTextA也只是把参数转换后再调用SetWindowTextW而已
#4
你看你的编译环境是什么
多字节,还是Unicode。。
多字节,还是Unicode。。
#5
int num1,num2,num3;
TCHAR ch1[10],ch2[10],ch3[10];
GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
num1=_wtoi(ch1);
num2=_wtoi(ch2);
num3=_wtoi(ch3);
_itow(num3,ch3,10);
GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);
#6
编译环境用的是VS2010。。。
为什么要用“TCHAR”???
“_wtoi”中“_w”是什么意思???
“_itow”中为什么要用“_”呢???
#7
#8
你把工程属性改成多字节字符集
#9
编译环境中有个项目属性其中可以设置Unicode字符集和多字节字符集
Unicode对应TCHAR
多字节对应char
对于函数来说一般都有最后带W的是对应Unicode 最后带A的是对应多字节
比如SetWindowTextW 这个函数就是对应Unicode 他的输入参数就需要是TCHAR
Unicode对应TCHAR
多字节对应char
对于函数来说一般都有最后带W的是对应Unicode 最后带A的是对应多字节
比如SetWindowTextW 这个函数就是对应Unicode 他的输入参数就需要是TCHAR
#10
char * 和 lpctstr 可不一应哦,需要转化的。
#11
“LRESULT”是什么类型,返回“0”可以吗???
LRESULT CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
//取出接收到的数据
CString str=(char*)lParam;
CString strTemp;
//获得已有数据
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
//显示所有接收到的数据
SetDlgItemText(IDC_EDIT_RECEV,str);
return 0;
}
LRESULT CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
//取出接收到的数据
CString str=(char*)lParam;
CString strTemp;
//获得已有数据
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
//显示所有接收到的数据
SetDlgItemText(IDC_EDIT_RECEV,str);
return 0;
}
#12
“LRESULT”是什么类型,返回“0”可以吗???
LRESULT CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
//取出接收到的数据
CString str=(char*)lParam;
CString strTemp;
//获得已有数据
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
//显示所有接收到的数据
SetDlgItemText(IDC_EDIT_RECEV,str);
return 0;
}
LRESULT CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam)
{
//取出接收到的数据
CString str=(char*)lParam;
CString strTemp;
//获得已有数据
GetDlgItemText(IDC_EDIT_RECV,strTemp);
str+="\r\n";
str+=strTemp;
//显示所有接收到的数据
SetDlgItemText(IDC_EDIT_RECEV,str);
return 0;
}
#13
找本windows 编程序书看看,也是很不错的选择了。