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 一个在使用中。
我正在修改 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 一个在使用中。