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

Bob*_*lan 8 c++ winapi

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

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

Rol*_*ien 20

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

那你就不需要演员.

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

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


R S*_*hko 6

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

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

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