直接 SetWindowTextW  不过你要保证传入的字符串编码正确

解决方案 »

  1.   

    项目-属性-配置属性-常规里指定字符集为Unicode
      

  2.   

    前的三位一起回复了:
    1,直接调用,编译不过
    编译错误:error C2039: 'SetWindowTextW' : is not a member of 'CWnd'
    2,编译选项设定为UNICODE
    因为是老工程了,很多别的函数又不适用了
    3,编码格式改成宽字节的就行
    没有太理解什么意思,尝试过变长宽字节再传入参数,编译不过
    编译错误:error C2664: 'SetWindowTextA' : cannot convert parameter 1 from 'unsigned short *' to 'const char *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
      

  3.   

    不用CWnd封装的这样用WCHAR strText[]=L"我在测试宽字符";
    ::SetWindowTextW(GetSafeWnd(),strText);
      

  4.   

    发现窗口创建的时候就已经是用CWnd创建的
      

  5.   

    外部用WCHAR strText[]=L"我在测试宽字符";
    ::SetWindowTextW(你的指针->GetSafeWnd(),strText);内部用,就是上面写的
      

  6.   

    何为外部用?
    按照上面的方式::SetWindowTextW(你的指针->GetSafeWnd(),strText);
    编译错误:
    error C2064: term does not evaluate to a function
      

  7.   


    这个错误提示根本就不是Unicode的编译选项!
      

  8.   

    对,目前不是Unicode的编译选项
    因为是在老工程上添加新功能,也会显示非Unicode的内容,所以不能从编译选项处修改
    而且,如果要该的话,变动非常大
      

  9.   


    当然不会了!
    但是确实是我取得指针的时候有笔误现在我有点怀疑是MultiByteToWideChar的问题
    因为现在是大部分的情况好用,只是发现有一个西班牙语的符号,还是不对
      

  10.   

    使用通用兼容函数和数据类型。如TCHAR lstrcpy createfile