最近用VS2010建立的C++项目在char*类型数据转换到LPCWSTR的时候,默认直接转换会提示报错。用强制转换的方式会导致乱码的出现。在网上查找了资料之后知道,“从Visual C 2005开始,编译器不再进行从char*到LPCWSTR的隐式转换了,用VC 6.0编译就没问题了,或者用提供的宏TEXT("字符串")来使用 MessageBox一类的API函数。“
所以用VS2010进行编译的时候最好用宏TEXT("字符串")的方法来进行转换。例:
//定义信息字符串
LPCWSTR lpszCreate=TEXT("收到WM_CREATE消息,创建窗口");
LPCWSTR lpszDestroy=TEXT("收到WM_DESTRORY消息,窗口关闭");
LPCWSTR lpszCaption=TEXT("消息");
LPCWSTR lpszLBT=TEXT("鼠标左键按下,收到消息");
LPCWSTR lpszRBT=TEXT("鼠标右键按下,收到消息");
LPCWSTR lpszExit=TEXT("你确定要退出吗");
而不是:
LPCWSTR lpszCreate="收到WM_CREATE消息,创建窗口";
也不是:
LPCWSTR lpszCreate=(LPCWSTR)"收到WM_CREATE消息,创建窗口";
所以用VS2010进行编译的时候最好用宏TEXT("字符串")的方法来进行转换。例:
//定义信息字符串
LPCWSTR lpszCreate=TEXT("收到WM_CREATE消息,创建窗口");
LPCWSTR lpszDestroy=TEXT("收到WM_DESTRORY消息,窗口关闭");
LPCWSTR lpszCaption=TEXT("消息");
LPCWSTR lpszLBT=TEXT("鼠标左键按下,收到消息");
LPCWSTR lpszRBT=TEXT("鼠标右键按下,收到消息");
LPCWSTR lpszExit=TEXT("你确定要退出吗");
而不是:
LPCWSTR lpszCreate="收到WM_CREATE消息,创建窗口";
也不是:
LPCWSTR lpszCreate=(LPCWSTR)"收到WM_CREATE消息,创建窗口";