Hi,有很多问题请教:WCHAR 与 wchar_t 一样吗?
mbstowcs 与 MultiByteToWideChar 功能一样吗?如何选择?
在一个VC6 Project Setting中默认是MBCS,哪种情况下需要改为支持Unicode? 如何改?
还有原来写的一个VC6程序,其中用到以上函数与类型。以前在Win2K Pro下执行都正常,现在发现在很多安装了所有最新Windows 2000修补程序的PC上就不能正确执行了。这是否Win2K修补程序认为我的Unicode转换的某些代码不安全导致?很迷惑,希望高手指点,醍醐灌顶。
谢谢。周末愉快!

解决方案 »

  1.   

    个人感觉还是TCHAR好一些,wchar好象不够宽,中文字符数组都不好用还是TCHAR好一些~
      

  2.   

    TCHAR 是一个宏定义,在不同的系统平台下,可能是char,也可能是wchar。
    pc平台下默认是char,pocket pc平台下默认是wchar。
      

  3.   

    typedef unsigned short wchar_t;//这是最开始的吧
    TCHAR.H还用一个新的数据类型TCHAR来解决两种字符数据类型的问题。如果定义了_UNICODE标识符,那么TCHAR就是wchar_t:typedef wchar_t TCHAR;否则TCHAR就是char:typedef char TCHAR;
    首先推荐的类型是TCHAR(通用字符类型)。当你定义了_UNICODE宏的时候,TCHAR就是WCHAR,当你没有定义这个宏的时候,TCHAR就是char,很不可思议吧,我们可以来看一下TCHAR的定义:#ifdef UNICODE // r_winnttypedef WCHAR TCHAR, *PTCHAR;#else /* UNICODE */ // r_winnttypedef char TCHAR, *PTCHAR;#endif /* !_TCHAR_DEFINED */