为什么我的简单C ++ GUI应用程序显示中文消息框?

时间:2010-01-17 03:08:48

标签: c++ winapi

哦,至于整个(LPCWSTR)铸造的东西:它不会编译,除非我把它们。它给了我这个错误信息:

  

错误1错误C2664:'MessageBoxW':无法将参数2从'const char [22]'转换为'LPCWSTR'

3 个答案:

答案 0 :(得分:19)

在你的字符串前面放一个L,使它成为一个宽字符串。 L“再见残酷的世界”

然后你不需要演员。

您还可以使用TEXT(“”)宏来创建unicode字符串或ascii字符串,具体取决于您的配置设置。

你看到中文的原因是MessageBox将ascii字符串解释为unicode。

答案 1 :(得分:6)

你已经有了答案,但这是一个很好的例子,说明为什么你应该使用避免演员表。是的,演员表会让您的代码编译,但除非您了解正在发生的事情,否则您很可能只是创建了一个错误。

一般来说,我的3个施法规则是:

  1. 不要施放(修复代码)。
  2. 不要施放(调整你的类型以停止需要施法)
  3. 好的,演员,但明天重新审视你的决定,看看你是否可以做#1或#2。

答案 2 :(得分:0)

我强烈猜测您的源文件编码错误。你能检查它是否以某种Unicode风格保存,很可能是UTF-16?