我用VS2005编程时,为什么有时需要_T(""),有时又不需要_T("")?
例如AfxMessageBox(_T("Hello"))和AfxMessageBox("Hello")),其中之一有时能通过编译,有时又不能通过编译?
甚是困惑!与IDE设置有关吗?
请教专家!谢谢!

解决方案 »

  1.   

    有关,mfc和win32工程默认unicode编码,必须带_T,控制台不需要,总之带_T总是对的
      

  2.   

    当函数参数(包括类的构造)需要 LPWSTR/LPCTSTR/LPTSTR/LPCWSTR/TCHAR * 时候,就要用_T(""),强制转换成UNICODE类型(16位)
    如果不是,像是 char *,LPSTR,LPCSTR的时候,就要用8位的字符了 
      

  3.   

    _T 是自适应的如果定义了 unicode ,则 _T 则是 wchar否则 _T 为 char
      

  4.   

    这就是常见的ANSI和Unicode的区别了。_T是一个宏,是自动适用的
      

  5.   

    lz 你现在就记得加上 _T 或者 TEXT 就对了,
    原因等你明白了 ANSI UNICODE 的区别之后自然懂得了。
      

  6.   


    在IDE里面是可以设置是多字节的,还是宽字符的。
    可以看看windows核心编程,里面有一章专门讲这个unicode
      

  7.   

    如果创建项目的时候设置了使用unicode的话
    可以理解成很多函数的参数就要使用宽字符的字符串 比如LPCTSTR之类
    用了_T()的话就可以把字符串变为unicode格式 就是wchar型数组(每个字母占两个字节)
    如果没设置unicode的话 
    部分函数的参数就会是使用之前一直学习的普通char组了
    而用了_T()的那个字符串还是原来的ansi格式 就是常见的char型数组(每个字母占一个字节)呃 以上是我个人理解···用词可能不准确 不过比较容易记住吧···
      

  8.   

    我看一本书上说_T()的作用是使括号中的内容国际化,
    将参数中的字符转换成:Unicode,Multibyte-character或SBCS编码