Windows CE MessageBox 不显示 unicode 文本和图标透明度

Windows CE MessageBox not displaying unicode text and Icon Transparency

我正在修改 Windows CE 应用程序以通过 Unicode 显示各种语言。

通过更改资源文件上的字体,我设法在按钮中显示,但无法在 MessageBox 中正确显示“παρίσταταί”。

结果如下所示:

我找到了一个开源 XMessageBox 替代品,并在 Windows CE 中使用了一些小改动。结果是这样的:

我的问题是由于无法通过 Message Box Hook 设置字体(在 Win CE 中不可用)我在 XMessageBox 中将字体设置为 "Arial Unicode MS" 并且将显示文本但图标是不正确的。

如何让 MessageBox 使用其他字体如何让 XMessageBox 没有透明的 ICON 背景?

桌面版 XMessageBox 可以在 这里 找到,我有 GitHub 测试回购供您查看代码的程序 - 在 CUnicodeTestDlg::OnInitDialog 方法中。

    CStringW greekText( L"παρίσταταί" );

    TheButton.SetWindowText( greekText  );

    ::MessageBox(*this, 
            greekText,
            L"Is this greek?", MB_YESNO | MB_ICONHAND );

    XMessageBox( *this, 
            greekText,
            L"Is this greek?", MB_YESNO | MB_ICONHAND );

请注意: "Arial Unicode MS" 需要在设备或模拟器上安装 XMessageBox 才能正确显示希腊文本。

我通过在其上安装了相应的非英语操作系统的设备解决了这个问题(这是日语并且使用日语文本 - 而不是希腊语)。通过这种方式,文本可以正确显示,并且 MessageBox 上的按钮使用适当的语言。我删除了 XMessageBox 的使用并保留标准 Windows API 一个在使用中。