Использование WideCharToMultiByte в Windows Mobile

У меня есть код, разработанный для Win32 (XP и более поздних версий), который я портирую на Windows Mobile 6. Он содержит следующую строку:

int count = ::WideCharToMultiByte( CP_ACP, WC_NO_BEST_FIT_CHARS, ..., 0, 0 );

В Windows XP это работает нормально, но в Windows Mobile возвращает 0, а GetLastError () возвращает ошибку 1004 «Недопустимые флаги». WC_NO_BEST_FIT_CHARS определяется в winnls.h в Windows Mobile 6 SDK.

Этот код будет работать в моих ограниченных тестах, если я либо заменю вызов на ::wcstombs или заменить WC_NO_BEST_FIT_CHARS с 0.

Я хотел бы знать, каково будет изменение этих изменений. Будет ли это работать, если я запустлю свою программу на китайской или русской версии Windows Mobile?

1

Решение

Windows Mobile основана на Windows CE и, согласно документации, WideCharToMultiByte не поддерживает флаг WC_NO_BEST_FIT_CHARS в Windows CE.

Согласно этой странице, поддерживаемые флаги:

WC_COMPOSITECHECK Конвертировать составные символы в предварительно составленные символы.
WC_DISCARDNS Отбрасывать непространственные символы во время преобразования.
WC_SEPCHARS Генерация отдельных символов во время преобразования.
(Это поведение конвертации по умолчанию).
WC_DEFAULTCHAR Заменить исключения символом по умолчанию во время преобразования.
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]