LPCWSTR
指向unicode编码字符串的32位指针
LPCWSTR是一个指向unicode编码字符串的32位指针,所指向字符串是wchar型,而不是char型。
MSDN 原文
An LPCWSTR is a 32-bit pointer to a constant string of 16-bit Unicode Charactor, which may be null-terminated.
This type is declared as follows:
typedef const wchar_t* LPCWSTR;
简要解释
该类型是如下声明的:
typedef const wchar_t* LPCWSTR;
因为在VS2005以后,编码方式默认为Unicode,部分函数在使用时默认调用Unicode方式(函数名+W,exp:MessageBox+W=MessageBoxW),而非ANSI方式(函数名+A,exp:MessageBox+A=MessageBoxA)。
请看winuser.h中的声明如下:
上述声明的意思是,在unicode编码下MessageBox被编译为MessageBoxW,否则就编译为MessageBoxA。而两者的区别则看函数声明中参数2、3就可以明白了。
关于错误
如果遇到参数错误(cannot convert parameter * from 'const char [**]' to 'LPCWSTR'),可以考虑察看声明,如果有ANSI方式的只要在函数后面加个A就可以了,或者在定义参数时把char*改为WCHAR*。
如果是混合使用的,那可以考虑转化,方法很多,比如使用TEXT()对字符串常量进行转化。
在VS2012以后的版本中默认是使用Unicode的,所以会出现很多以前版本没有的编译错误(实参与形参类型不匹配)。
参考资料
最新修订时间:2024-01-21 20:28
目录
概述
MSDN 原文
简要解释
参考资料