Есть ли способ добавить текст Unicode в меню MBCS MFC - PullRequest
1 голос
/ 04 августа 2011

У меня есть приложение MFC, скомпилированное с набором символов MBCS. У меня есть подменю в главном меню, в которое я хотел бы добавить символы Юникода. Можно ли это сделать?

1 Ответ

2 голосов
/ 05 августа 2011

Вы можете принудительно использовать строки Unicode даже в приложениях MBCS, явно вызвав форму Unicode API и передав ей строку Unicode.

В вашем случае, ModifyMenuW () - это API, который устанавливает текст пункта меню (при условии, что пункт меню уже существует):

ModifyMenuW(GetMenu()->m_hMenu,ID_APP_ABOUT, MF_BYCOMMAND , 0, L"\u573F");

Этот код отображает китайскую идеограмму (я понятия не имею о ее значении) вместо исходного текста

L перед строкой говорит, что это строка Unicode. \u573F - это способ кодирования символа Unicode в исходный файл C ++ ASCII. W в конце имени API: оно обозначает Wide и обозначает Unicode-форму API.

Обратите внимание: если ваша цель - перевести полный пользовательский интерфейс вашего приложения, это совсем другая история: метод, который я здесь показал, подходит только для однократных вызовов. Вы не можете создать полный пользовательский интерфейс таким образом.

Вы можете перевести ваше приложение MBCS на японский, русский или любой другой язык ... без переключения на Unicode (хотя было бы очень неплохо сделать такой переход. Но это может быть дорого для устаревших приложений).

У вас есть 2 друга, которые могут вам помочь: appTranslator позволяет очень легко переводить ваше приложение (и управлять вашими переводами (Отказ от ответственности: это мое собственное объявление ;-) и Microsoft AppLocale помогает тестировать приложения MBCS на разных кодовых страницах, фактически не изменяя кодовую страницу вашего компьютера (для этого требуется перезагрузка).

...