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