Я считаю, что абсолютно возможно портировать приложение на другие языки / кодовые страницы, вам нужно всего лишь изменить файлы .rc (ресурс), в основном имея один файл ресурсов для каждого языка, что вы, скорее всего, захотите сделать в любом случае,поскольку строки в меню и / или таблицах строк будут на другом языке.И это фактически единственное необходимое изменение в части приложения.
Другая часть - это система, на которой вы ее запускаете.Окно может быть Unicode или не Unicode.Это можно увидеть с помощью утилиты Spyxx, которая сообщает вам, является ли окно (процедура) юникодом или нет (Свойства окна, вкладка Общие).И хотя окна Unicode работают должным образом, окна, не поддерживающие Unicode, должны изменять кодировку с / на Unicode и MBSC при получении или установке текста.Преобразование основано на кодовой странице системы (по умолчанию).Это может быть установлено только глобально (для всей машины), а не для приложения или окна.И, конечно же, установка кодовой страницы шрифта не достаточна (и, в принципе, она вообще не нужна, если вы запускаете приложение на компьютере с «правильной» кодовой страницей).То есть для приложений, не поддерживающих Юникод, только одна кодовая страница будет работать должным образом, другие - нет.
Я вижу два варианта:
- Если вам нужно только обновитьнебольшое количество элементов управления, возможно, будет возможно изменить только эти элементы управления на Unicode, и использовать "широкие" версии функций или сообщений для проверки окна get / set - вам придется преобразовать текст между Unicode и желаемой кодовой страницей,Это требует написания некоторого кода, но имеет то преимущество, что преобразование не зависит от системной кодовой страницы по умолчанию, например, вы можете иметь кодовую страницу в каком-то файле конфигурации, в реестре или в качестве опции командной строки (в ярлыке приложения).Некоторые типы элементов управления могут быть изменены на Unicode, другие нет, поэтому, пожалуйста, проверьте документацию.Успешно использовал эту технику для приложения mbcs, отображающего / редактирующего переведенные строки на многих разных языках, но у меня был только один элемент управления, List-View, который, кстати, предлагает сообщение
LVM_SETUNICODEFORMAT
, что позволяет использовать тексты Unicode даже в приложении mbcs. - Самый простой метод - просто запустить приложение как есть, но оно будет работать только на машинах с правильной кодовой страницей по умолчанию, как это делают большинство не-юникодных приложений.
Системную кодовую страницу по умолчанию можно изменить, установив параметр "Язык для программ, не поддерживающих Юникод" * , который доступен в региональных настройках на вкладке "Администрация" и требует перезагрузки.Изменение языка пользовательского интерфейса Windows также изменит эту опцию, но, установив этот параметр, вам не нужно менять язык пользовательского интерфейса, например, вы можете иметь английский пользовательский интерфейс и восточноевропейскую кодовую страницу.
См. Очень похожийсообщение здесь .