VC++6.0 Unicode & ascii

Author Avatar
Aryb1n 12月 05, 2017

准备卸载了Linux, 装个Windows好好学windows编程…
现在Windows里搞了个xp + vc6.0
然后照着书…敲了一个helloworld…然后…

#include "windows.h"
#include "tchar.h"

int main()
{
    MessageBox(NULL, 
               L"Hello World!", 
               L"Aryb1n", 
               MB_OK);

    return 0;
}

然后我的标题就显示一个H….
然后我以为是Windows xp太远古了….标题栏就能显示一个字母…

然后我才发现……..
VC6.0默认处理的是ASCII, 而我存储的是Lstring…俩字节一个unicode, 所以遇到那个\x00的时候就截止了

找了一下解决办法

  1. 就用普通的String…不加L前缀
  2. TEXT("Hello world"), 或者_TEXT, _T (这三个一样), 这个宏定义会根据你的环境…在ascii的时候相当于ascii的string, 在unicode的时候相当于L"String"
  3. 继续用LString, 在VC6.0里添加宏UNICODE, _UNICODE, [Project Setting] -> [General] -> [Preprocessor definitions]这个框框里加上这俩宏