【问题标题】:How to print symbol "↑" using AfxMessageBox?如何使用 AfxMessageBox 打印符号“↑”?
【发布时间】:2021-04-17 02:36:52
【问题描述】:

如何使用AfxMessageBox() 打印此符号"↑"

我尝试这样编码:

AfxMessageBox("↑");

编译后得到一个奇怪的符号:

AfxMessageBox() 不支持这个符号吗?

【问题讨论】:

  • 您是编译为 Unicode 还是 MBCS?
  • 我使用的是多字节字符集
  • @Jess 不行,你需要 Unicode
  • 但我的任务只使用 MBCS,我不能使用 unicode
  • 并在“↑”前加一个L。在 Configuration Properties/General 中,真的是 charset MBCS 吗?

标签: c++ visual-c++ visual-studio-2013 mfc


【解决方案1】:

您的源文件可能保存为 UTF-8。要使用 MBCS 字符串文字,您的源文件需要保存在与您的操作系统用户区域设置相同的字符集中。不幸的是,我认为支持这个特殊字符的字符集并不多。否则,您必须切换到 Unicode。

如果你不能将整个应用切换到Unicode,那么你至少可以使用MessageBoxW()来代替,例如:

::MessageBoxW(NULL, L"↑", L"title", MB_OK);

或者

::MessageBoxW(NULL, L"\x2191", L"title", MB_OK);

【讨论】:

  • 我强烈建议不要将文字 字符保存到源代码中。在不同 IDE 中的代码页、修订控制系统和其他用户之间,该字符将被损坏。而是将0x2191 直接内联到以空结尾的WCHARwchar_t 数组中。
  • 如果我使用 MessageBoxW() 我得到了同样的奇怪字符
  • @selbie 不需要 wchar 数组,您可以简单地将字符转义为 L”\x2191”。我已经更新了我的示例。
  • @RemyLebeau 它使用 L"\x2191" 谢谢你
  • 我建议你改用nullptr,因为这是用 C++ 标记的。
猜你喜欢
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 2022-08-14
相关资源
最近更新 更多