哦,至于整个(LPCWSTR)铸造的东西:它不会编译,除非我把它们。它给了我这个错误信息:
错误1错误C2664:'MessageBoxW':无法将参数2从'const char [22]'转换为'LPCWSTR'
答案 0 :(得分:19)
在你的字符串前面放一个L,使它成为一个宽字符串。 L“再见残酷的世界”
然后你不需要演员。
您还可以使用TEXT(“”)宏来创建unicode字符串或ascii字符串,具体取决于您的配置设置。
你看到中文的原因是MessageBox将ascii字符串解释为unicode。
答案 1 :(得分:6)
你已经有了答案,但这是一个很好的例子,说明为什么你应该使用避免演员表。是的,演员表会让您的代码编译,但除非您了解正在发生的事情,否则您很可能只是创建了一个错误。
一般来说,我的3个施法规则是:
答案 2 :(得分:0)
我强烈猜测您的源文件编码错误。你能检查它是否以某种Unicode风格保存,很可能是UTF-16?