新手问最初级,TEXT("HelloWin");是什么意思?
这是windows编程那本书上的例子,有一句:
    static TCHAR szAppName[] = TEXT("HelloWin");我不知 TEXT 在这里是什么意思,起何作用?

解决方案 »

  1.   

    #define TEXT(quote) __TEXT(quote)   // r_winnt
    #define __TEXT(quote) L##quote      // r_winnt
      

  2.   

    这个宏定义我也查到了,但是我不明白什么意思。
    #define TEXT(quote) __TEXT(quote)
    quote 什么意思
    #define __TEXT(quote) L##quote
    L##quote 什么意思
      

  3.   

    如果是程序需要跨国使用的话,需要使用UNICODE对字符串进行处理~
      

  4.   

    前面有_TEXT是表示适应当前的编码环境,如果当前是UNICODE,则你的"HelloWin"就是宽字符UNICODE,否则是ASCII。前面加个L表示强制宽字符,一般都是移动平台上用的,要是希望的你程序能够跨平台就用_TEXT。
      

  5.   

    看的编译器参数 如果有unicode 
    那么 #define __TEXT(quote) L##quote      // r_winnt
    //上边的L呢. 意思是让编译器编译成UNICODE字符的.
    #else   /* UNICODE */               // r_winnt#ifndef _TCHAR_DEFINED
    typedef char TCHAR, *PTCHAR;
    typedef unsigned char TBYTE , *PTBYTE ;
    #define _TCHAR_DEFINED
    #endif /* !_TCHAR_DEFINED */typedef LPCH LPTCH, PTCH;
    typedef LPSTR PTSTR, LPTSTR, PUTSTR, LPUTSTR;
    typedef LPCSTR PCTSTR, LPCTSTR, PCUTSTR, LPCUTSTR;
    #define __TEXT(quote) quote         // r_winnt
    //这个就是没有定义unicode的时候.直接默认就是ascii字符
    TEXT作用呢 和 TCHAR一样. 当你编译器参数用了UNICODE _UNICODE 
    那么TCHAR 就被编译为typedef WCHAR TCHAR
    而WCHAR 有被定义为wchar_t
    例如 
    TCHAR szBuffer[]=TEXT("Hello");当是unicode时. 被编译为wchar_t szBuffer[]=L("Hello")
    是ascii时,编译为 char szBuffer[]="Hello"
      

  6.   

    1.宏定义,和函数有点类似,不过宏定义不需要指定参数的类型
    2.##是连接符,把前后两段连接起来,L表示Unicode
    一般使用Unicode这样用
    CString str=L"abc";
    也可以使用_T("");自动在Unicode与多字节下转换
      

  7.   


    可以把quote 当作一个变量
    例如 TEXT("hello world") 就相当于 __TEXT("hello world") 
    而##是连接符,练就2个字符串用到的。这样当#define __TEXT(quote) L##quote__TEXT("hello world") 相当于 L"hello world" L开头然后跟着一个字符串,标明这个字符串是宽字符的。