永发信息网

C++ 编译时提示:不能将参数 1 从“char [6]”转换为“LPCTSTR”

答案:2  悬赏:70  手机版
解决时间 2022-01-01 00:13
  • 提问者网友:暮烟疏雨之际
  • 2021-12-31 03:50
CString METext;
char Count[6];
int a,b;
m_MultiEdit.GetWindowTextW(METext);
a=METext.GetLength();
b=m_MultiEdit.GetLineCount();
a-=(b-1);
itoa(a,Count,10);
m_CharEdit.SetWindowTextW(Count);
itoa(b,Count,10);
m_LineEdit.SetWindowTextW(Count);
最佳答案
  • 五星知识达人网友:执傲
  • 2022-01-10 04:37
setWindowTextW() 后面这个W代表的是宽字节类型 即WCHAR类型 也就是说
setWindowTextW()中的参数是一个WCHAR类型的指针 那就不能将 CHAR 类型转换为WCHAR
类型了 编译器就报错了
setWindowTextA()这个中的指针是一个CHAR类型的指针
可将那个W删除程序就OK了
修改如下
CString METext;
char Count[6];
int a,b;
m_MultiEdit.GetWindowText(METext);
a=METext.GetLength();
b=m_MultiEdit.GetLineCount();
a-=(b-1);
itoa(a,Count,10);
m_CharEdit.SetWindowText(Count);
itoa(b,Count,10);
m_LineEdit.SetWindowText(Count);

一般在工程中都是使用SetWindowText 而不是直接写SetWindowTextA 或者SetWindowTextW
编译器会自动根据UNICODE _UNICOUDE 自动转换成相应的CHAR 或者 WCHAR
CHAR WCHAR 一般都写为TCHAR
如果你的工程就是设置为多字节的工程,那也可以直接使用CHAR
VC++6.0的工程默认是多字节的工程
SetWindowTextA,SetWindowTextW,前者是多字节,后者是unicode版本
全部回答
  • 1楼网友:像个废品
  • 2022-01-10 05:05
在项目属性里面找到项目默认值下面的字符集, 将其换为:使用多字节字符集就可以了,运行成功。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯