2016-07-12 1 views
2

Я изменяю приложение Windows CE для отображения различных языков через Unicode.Windows CE MessageBox не отображает текст в Юникоде и прозрачность значков

Изменив шрифт в файле ресурсов, мне удалось отобразить его одним нажатием кнопки, но он не может корректно отображать «παρίσταταί» в MessageBox.

Результат выглядит следующим образом:

Should show "παρίσταταί"

Я нашел открытую замену источника XMessageBox и получил это работает в Windows CE с некоторыми незначительными изменениями. Результат таков:

What happened to the icon background?

Моя проблема обусловлена ​​не в состоянии установить шрифт через Hook Message Box (не доступен в Win CE) Я установил шрифт «Arial Unicode MS» в XMessageBox и текст будет отображаться, но значок неправильный.

Как получить MessageBox для использования другого шрифта ИЛИ Как получить XMessageBox, чтобы он не имел прозрачный фон ICON?

настольной версии XMessageBox можно найти here и у меня есть 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, чтобы правильно отобразить греческий текст.

+0

Я не вижу ошибки в коде GitHub, это, вероятно, что-то странное в Windows CE. Почему бы вам просто не удалить значок? Эти значки огромны, для 4 значков требуется около 1 МБ. Также дважды проверьте, что «Arial Uniocde MS» установлен. –

ответ

0

Я решил это, установив на него устройство с соответствующей не-английской операционной системой (которая была японской и использовала японский текст, а не греческий). Таким образом, текст отображается правильно, а кнопки на MessageBox находятся на соответствующем языке. Я удалил использование XMessageBox и оставил стандартный используемый Windows API.

Смежные вопросы