这里的效果是消息文本是正确的希腊字母,但消息标题都是空框,有时与其他文本有中文字符。

string msg= "ένα μήνυμα";
MessageBoxW(null, "ένα μήνυμα", cast(wchar*)msg.toStringz, MB_ICONERROR);

最佳答案

在将atoUTF16z转换为astd.utf而不是cast时,需要使用string(fromLPCWSTR):

MessageBoxW(null, "ένα μήνυμα", toUTF16z(msg), MB_ICONERROR);

不需要对字符串文字做任何操作,因为编译器通过查看MessageBoxW的参数类型自动创建一个utf-16常量。

10-07 23:47