我的MSDN是e文,看了也不清楚到底这函数是干什么的,还有新手遇到这些问题该看什么中文资料呢?多谢多谢:)

解决方案 »

  1.   

    _T的意思如下:在Windows操作系统中,以现在的版本来讲,Windows2000和WindowXP都是用Unicode字符的,也就是说一个字符占2个字节,而原来的Window98是用ASCII字符的,也就是一个字符占一个字节。这样在编程的时候就会遇到字符串转换的问题。_T是一个宏定义,用来在Unicode字符编码的时候,将你输入的字符串当作Unicode字符串,在ASCII字符编码的时候将你输入的字符串当作ASCII字符串。
      

  2.   

    TEXT()宏的另一个版本。实现宽字符。
      

  3.   

    转变成宽字符串。也就是Unicode字符
      

  4.   

    转变成宽字符串。也就是Unicode字符
    纠正一下。应该是转换成 MBCS。
    比如:
    TCHAR a[1] = _T("a");
    在PC环境下面:内存是这样的:0x61 0x00
    在WINCE环境下面:内存是这样的:0x00 0x61 0x00 0x00
      

  5.   

    楼上正解
    T不是函数,而是宏建议楼主利用VC的IDE再自己摸索一下,加深理解
    先用watch查看字符串的内存位置,然后查看对应memory的内容
      

  6.   

    实现Unicode字符,这样
    如果  "Hello"用ASCII码,占用5个字符
    _T("Hello")就占用10个字节,根据的是用了L"Hello!";
    我们平时编程是在ASCII码下编程,怎么在Unicode下编程呢
    如何在UNICODE下编程呢,为工程添加UNICODE和_UNICODE预处理选项(有的还说去除_MBCS,我认为不除去也可以),在编译器中进行如下的设置
    (1)VC.net中就是 项目 -> 属性 -> c/c++ -> 预处理器 在"预处理定义"中加入这两个宏定义
    (2)vc6中 project -> settings -> c/c++ -> Preprocessor definitions 
    (3)引入TCHAR.h文件,好像不需要单独引入,windows.h中就自动引入了
    (4)在安装Visual Studio时,在选择VC++时需要加入unicode选项,保证相关的库文件可以拷贝到system32下
    (5)在Project/Setting/link/output 中设置Entry为wWinMainCRTStartup(不设置好像也可以)
    我们平时工作的环境是ASCII的,不是UNICODE的,比如我们调用MessageBox函数可以这样调用
    MessageBox(NULL, "hello", "caption", MB_OK);,但在UNICODE下这样是不行的必须用MessageBox(NULL, L"hello", L"caption", MB_OK);为什么同样是MessageBox会有这样的不同呢,原来对MessageBox进行了如下的定义
    #ifdef UNICODE
    #define MessageBox  MessageBoxW
    #else
    #define MessageBox  MessageBoxA
    #endif // !UNICODE
    其它的函数也进行了如此的宏定义。