这里的效果是消息文本在希腊字母中是正确的,但消息标题都是空框,有时与其他文本有中文字符。
string msg= "ένα μήνυμα";
MessageBoxW(null, "ένα μήνυμα", cast(wchar*)msg.toStringz, MB_ICONERROR);
在将 a 转换为 a而不是强制转换时,您需要使用toUTF16z
(from std.utf
) :string
LPCWSTR
MessageBoxW(null, "ένα μήνυμα", toUTF16z(msg), MB_ICONERROR);
您不需要对字符串文字做任何事情,因为编译器会通过查看MessageBoxW
的参数类型自动创建一个 UTF-16 常量。