【问题标题】:visual studio weird behavior视觉工作室奇怪的行为
【发布时间】:2011-11-25 11:36:04
【问题描述】:

我正在使用 Visual Studio 2008 制作一个 win32 应用程序。

当我编译生成一个简单对话框的代码时,所有的对话框文本都以中文显示。我没有在任何地方设置中文。谁能详细说明问题是什么?

我的代码是

#include <windows.h>

int WINAPI WinMain(
    HINSTANCE   nowInstance,
    HINSTANCE   prevInstance,
    LPSTR   ipCmdLine,
    int     nCmdShow
    )
{
    MessageBox(NULL,"My First Program","Our University",MB_OK); 

    return 0;
}

【问题讨论】:

  • 这里没有显示任何对话框或中文。你能详细说明问题是什么吗?

标签: c++ visual-studio-2008 winapi dialog


【解决方案1】:

听起来您正在混合使用 Unicode 和 ANSI。

你试过了吗

MessageBox(NULL, _T("My First Program"), _T("Our University"), MB_OK);

这会给您带来预期的结果吗?

【讨论】:

  • 你编译时设置了 _UNICODE,所以 Windows 期望所有字符串都是 UTF16 格式,而你给了它们 ASCII。这很像给一个期待 int 的函数一个浮点数,除了没有编译器警告。
  • @backTangent: joelonsoftware.com/articles/Unicode.html“每个软件开发人员绝对、绝对必须了解 Unicode 和字符集的绝对最低要求(没有任何借口!)”
  • @Mooing 定义 _UNICODE 使 Windows 期望字符串包含非 UTF-16 的两字节固定宽度字符。这种区别在大多数情况下是无关紧要的,因为它们对于您将遇到的大多数代码点都是相同的(请参阅 BMP - 基本多语言平面)
  • @IronMensan:stackoverflow.com/questions/4592261/… 表示从 Windows 2000 开始,他们接受 UTF-16。但是,它也说文件路径是不透明的数组,除了大写/小写,这意味着“等价”字符可能不被视为等价。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多