如何定义所有winapi将字符串视为UNICODE?

使用visual studio,有没有办法定义winapi的所有function,将所有字符串视为UNICODE?

您必须为所有Unicode字符串使用L前缀。 非前缀字符串,例如"hello" ,始终是基于char的字符串。 语言中没有将此类字符串视为宽字符串的快捷方式。

MS库由宏组织。

  • 使用没有appende“A”或“W”的API方法的名称。
  • 在_T()宏中包装字符串定义。

通过这种方式,在预处理器中定义“_UNICODE”将构建unicode构建。

 CreateFile(_T("C:\out.txt"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 

将恢复到:

 // _UNICODE defined CreateFileW(L"C:\out.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 

要么

 // _UNICODE not defined CreateFileA("C:\out.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 

当您将项目设置为针对Unicode进行编译时,所有WinAPI函数都将采用Unicode字符串(如果存在unicode函数等效项)。 但是,当您在C ++中指定字符串文字时,它默认为char *所以为了创建Unicode字符串文字,您需要使用前缀L指定它们或使用宏_T( "mystring" ) (Visual Studio)

我想您正在寻找:Project-> MyProject Properties-> Configuration Properties。 将字符集设置使用Unicode字符集 。 这基本上使你的项目成为unicode,现在所有的function都需要unidoe。

确保在如此广泛的更改后仔细检查您的来源。