开发环境:VS2005 (非.Net)
MFC程序(用API编程也有此问题)一个基于对话框的界面上有一个按钮和一个文本编辑框,点击按钮在文本编辑框中输出一句中文。文本编辑框的成员变量是 ResultEdit按钮的代码里这样写:char sEdit[50];
strcpy(sEdit,"CSDN的高手好多");
//第2个参数的字符串的格式换成这样:TEXT("")、_T("")、L"" 都报错。
strcat(sEdit,"这里是学习的好地方");
ResultEdit.SetSel(0,-1);
ResultEdit.ReplaceSel(sEdit);编译报错,提示为 cannot convert parameter 1 from 'char [50]' to 'LPCTSTR' 这样的错误。类似问题看到有很多人问过,似乎在VS2005中这是一个比较常见的问题。初步了解这和 Unicode 有关,但是看了很多贴和资料都未能真正解决,希望高人指点!请不要给予诸如“哪里设置问题”等简易的回答,请说的详尽一些,本人是菜鸟,非常感谢!!!

解决方案 »

  1.   

    VC2005下默认是UNICODE,你可以改为多字节编译
    strcpy和strcat在VC2005中是被放弃的函数,你应该用lstrcpy和lstrcat
    用TCHAR宏代替char, 用_T()宏定义字符串,这样在UNICODE和多字节下都没问题.TCHAR sEdit[50];
    lstrcpy(sEdit,_T("CSDN的高手好多"));
    //第2个参数的字符串的格式换成这样:TEXT("")、_T("")、L"" 都报错。
    lstrcat(sEdit,_T("这里是学习的好地方"));
    ResultEdit.SetSel(0,-1);
    ResultEdit.ReplaceSel(sEdit);