当前位置:编程学习 > C#/ASP.NET >>

char LPCTSTR问题

int i;
i=10;
char str[20];
_itoa(total_pc,str,10);
GetDlgItem(IDC_EDIT2)->SetWindowText(str);

vs2008里面就这几行,怎么老提供最后一行有错:

error C2664: “CWnd::SetWindowTextW”: 不能将参数 1 从“char [20]”转换为“LPCTSTR” 
        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换

环境:vs2008 --------------------编程问答--------------------
GetDlgItem(IDC_EDIT2)->SetWindowText(A2T( str )); --------------------编程问答-------------------- 1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(152) : error C2065: “_lpa”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(152) : error C2065: “_convert”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(152) : error C2065: “_lpa”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(152) : error C2065: “_convert”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(152) : error C2065: “_convert”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(152) : error C2065: “_lpa”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(152) : error C2065: “_convert”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(152) : error C2065: “_acp”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(172) : error C2065: “_lpa”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(172) : error C2065: “_convert”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(172) : error C2065: “_lpa”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(172) : error C2065: “_convert”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(172) : error C2065: “_convert”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(172) : error C2065: “_lpa”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(172) : error C2065: “_convert”: 未声明的标识符
1>e:\wolf2009\vctest\ex1\ex1dlg.cpp(172) : error C2065: “_acp”: 未声明的标识符

出来的错误好像更多了。。。 --------------------编程问答-------------------- #include <AtlBase.h>
USES_CONVERSION;
LPCTSTR STR = A2W((char*)temp); --------------------编程问答-------------------- GetDlgItem(IDC_EDIT2)->SetWindowText((LPCTSTR)str); 
--------------------编程问答-------------------- 环境是WINCE还是win32下?

WINCE下要强制转换的 --------------------编程问答-------------------- 未声明?可能是缺少头文件吧 --------------------编程问答-------------------- 未声明?可能是缺少头文件吧 --------------------编程问答-------------------- 如果已经定义了_UNICODE的话,SetWindowText对应的是SetWindowTextW.
其中SetWindowTextA函数处理的是ANSI码,即char类型.
而SetWindowTextW函数处理的是宽字符,即wchar_t类型.
LPCTSTR对应的是wchar_t类型,
试SetWindowTextA("xxx")应该可以的.
或者
CString tempStr(str);
SetWindowText(tempStr); --------------------编程问答-------------------- 在使用这个函数前,加上USES_CONVERSION就OK了,这是一个宏,里面有相关变量定义! --------------------编程问答-------------------- LZ传的参数是char数组哦,看来又是unicode惹的祸,LZ可以考虑先把char转化成LPCTSTR,或者吧_itoa换成_itow试试看,我有时也碰到这种字符集的问题,满纠结的... --------------------编程问答-------------------- 应该项目属性的原因,在【常规】属性页里面有个【字符集】的选项,如果选择的是多字符字符集就有这个问题,改成Unicode字符集就ok了。
补充:.NET技术 ,  VC.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,