在vc++6.0下面这个函数SetDlgItemText(IDC_EDIT_DIGEST,(char *)buf);运行不会报错的
但是在vs2005下面,SetDlgItemText(IDC_EDIT_DIGEST,(char *)buf);就要报错,
 “CWnd::SetDlgItemTextW”: 不能将参数 2 从“char *”转换为“LPCTSTR”
我不知道如何,请高手帮忙,谢谢了

解决方案 »

  1.   

    lpctstr 在ansi/mbcs方式编译时是 const char *
      

  2.   

    CWnd::SetDlgItemTextW
    它需要宽字符
    用L((char *)buf)
      

  3.   


    他提示那个L找不到标识符
    错误 18 error C3861: “L”: 找不到标识符 e:\lf\mycert\mycert\mycertdlg.cpp 505
    不知道为什么
      

  4.   

    buf别用char*了,声明的时候就用wchar*吧,另外L我记得只能对常量有效吧
      

  5.   

    hoho
    设置一下用多字符和unicode之间转换,vs2005里面的
    应该会吧!
      

  6.   

    我那个没用那些只是,把buf的值付给了一个CString 的变量
    那样就通过了
    CString temp;
     temp=buf;
    SetDlgItemText(IDC_EDIT_DIGEST,temp);谢谢了各位
      

  7.   

    CString temp; 
    temp=buf; 
    SetDlgItemText(IDC_EDIT_DIGEST,temp); 
      

  8.   

    SetDlgItemText(IDC_EDIT_DIGEST,(LPCTSTR)buf);
      

  9.   


    楼主遇到 UNICODE 问题了。
    VC6中,工程默认是非 UNICODE 工程的;
    而2005中,默认是 UNICODE 工程。
    所以这个问题,最好的解决方法就是把 2005 的工程改为非 UNICODE 工程。但是,是时候学习 UNICODE 了,『Windows程序设计』第二章讲解了 UNICODE 。