vs2008里strcpy(nid.szTip ,"info");一直报错

来源:百度知道 编辑:UC知道 时间:2024/09/22 22:38:27
vs2008里strcpy(nid.szTip ,"info");一直报错
nid.szTip 是NOTIFYICONDATA的数据结构
msdn上szTip是TCHAR szTip[64];
然后编译一直报错
error C2664: 'strcpy' : cannot convert parameter 1 from 'WCHAR [128]' to 'char *'
谁能告诉我应该怎么改啊。。。

编码问题,不要用strcpy,这个是ansi字符集下的函数,用unicode字符集下的拷贝函数wcscpy

因为TCHAR是一个宏,当定义了UNICODE时,它就是WCHAR,当没定义UNICODE时,它就是CHAR。
而strcpy要求的参数永远都是CHAR*类型的。

所以你的程序应该定义了UNICODE,所以才会有这样的报错。

在项目属性里面选择字符集时用无就行了。

用这个试试
lstrcpy(nid.szTip ,T"info");

strcpy(nid.szTip ,TEXT("info"));

这样写就可以了,vs2008默认是unicode编码的,unicode编码的字符串每个字符两个字节的,不能简单的"info",要用TEXT()宏转换下。

到项目属性->配置属性-》c/c++-》命令行可以看到有
/D "_UNICODE" /D "UNICODE"

说明是unicode编码的,VS2003.2005都没这个命令的,所以就VS2008报错