当它在variables中时,来自utf8string的转换无效

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

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

在这里输入图像说明

string转换为LPCWSTR而不是转换时,您需要使用toUTF16z (来自std.utf ):

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

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