|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Кирилица в WIN32 GUI приложениях независимо от настроек в контрольной панели |
|
|
C/C++ - [решено] Кирилица в WIN32 GUI приложениях независимо от настроек в контрольной панели
|
Будем жить, Маэстро... Сообщения: 6694 |
Профиль | Сайт | Отправить PM | Цитировать
Доброго всем здоровья. Нужна ваша помощь. Возникла необходимость написать программку, чтобы она работала на Windows XP и Widnwows Vista (если будет работать на Windows 7, будет вообще здорово, но проверить негде... Нет знакомых с семёркой). На ХР работает как часики, а на Vista не совсем. Не отображаются правильно русские символы. Скриншот приложу.
Проверял на Windows Vista Home Premium (SP1). Версия русская. Получается следующее, интерфейс на русском, и некоторые записи (описания в GroupBox) не отображают правильно кирилицу, а некоторые, на кнопках и переключателях нормально отображают, что сделать - не знаю совсем. Прошу помощи. Английский интерфейс это не вариант потому что там ещё будет ComboBox (при выборе локализации "русская Windows") в котором будет выбор текста на русском, по другому нельзя. Архив проекта прикрепляю, там находится также и исполнимый файл. Программная среда в которой разрабатывается приложение: Цитата из своего профиля:
|
||
------- Отправлено: 12:46, 14-07-2009 |
Старожил Сообщения: 159
|
Профиль | Отправить PM | Цитировать Drongo, Кое что могу подсказать. Я тоже как-то разрабатывл програмку (правда на Delphi)
и столкнулся с такой же проблемкой.Из под Виста-кракозябры, из под XP все гуд.Правда не все надписи.Оказалось надо было в свойствах шрифтов выставить CharSet: RUSSIAN_CHARSET.А те которые отображали кракозябры было (ANSI_CHARSET).Но это опять же Delphi, но думаю свойства шрифтов во всех языках одинаковы. P.S. Глянул вашу програмку из под семерки все гуд (все на русском)! |
Отправлено: 15:32, 14-07-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Dmitrijan:
Цитата Dmitrijan:
Цитата Dmitrijan:
|
|||
------- Последний раз редактировалось Drongo, 14-07-2009 в 18:12. Причина: Добавил инфу Отправлено: 17:24, 14-07-2009 | #3 |
Старожил Сообщения: 159
|
Профиль | Отправить PM | Цитировать Цитата Drongo:
Цитата Drongo:
|
||
Отправлено: 17:44, 14-07-2009 | #4 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Dmitrijan:
Протестировали на Vista, по вашему совету изменил в свойствах Font -> Charset - значение с DEFAULT_CHARSET на RUSSIAN_CHARSET и всё заработало правильно: Dmitrijan, Спасибо!!! Вопрос успешно решён. P.S. А всё-таки, почему при значении - DEFAULT_CHARSET на семёрке всё ок, а на висте кривовато? |
||
------- Отправлено: 18:04, 14-07-2009 | #5 |
Старожил Сообщения: 159
|
Профиль | Отправить PM | Цитировать Цитата Drongo:
P.S. Очень рад, что у вас все получилось!!! |
|
Отправлено: 18:22, 14-07-2009 | #6 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Здравствуйте, это снова я, но уже с несколько другим вопросом. Вот с русской Windows всё в порядке, а если эту же программу с русским интерфейсом запустить на английской версии? Мне кажется вместо русских символов будут знаки вопроса "?????". Я так понял, что нужно русские шрифты загрузить в проект в ресурсы и использовать шрифт из внутренних ресурсов программы? Но я не знаю как это сделать. Покажите на примере кому не трудно.
Только я всё равно не пойму, как добавить, встроить? шрифт в программу. |
------- Последний раз редактировалось Drongo, 17-07-2009 в 11:11. Причина: То что нашёл понятное для себя... Отправлено: 10:47, 17-07-2009 | #7 |
Старожил Сообщения: 159
|
Профиль | Отправить PM | Цитировать Drongo, Возможно при установке значения шрифта RUSSIAN_CHARSET, шрифт включится в проект автоматически при компиляции.
В Delphi шрифты включал, помню как, а вот СИ++ извеняйте не работал в нем, могу написать как в Delphi если надо |
Отправлено: 17:49, 17-07-2009 | #8 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Dmitrijan:
|
|
------- Отправлено: 18:30, 17-07-2009 | #9 |
Старожил Сообщения: 159
|
Профиль | Отправить PM | Цитировать Drongo, Вот я включал шрифт по такой инструкции:
Включение шрифта в ваш EXE: Создайте в текстовом редакторе файл с расширением *.rc , описывающий шрифт: MY_FONT ANYOL1 "Bauhs93.ttf" Первые два параметра могут быть любыми. Они будут использоваться в программе позже. Затем для создания *.res файла используйте компилятор командной строки BRCC32.EXE, поставляемый с Delphi. Если ваш файл на этапе 1 был назван MyFont.rc, командная строка в сеансе DOS должна выглядеть так: BRCC32 MyFont Программа добавит в компилируемый файл созданный ресурс .rc и создаст файл с тем же именем, за исключением расширения, которое будет .res: MyFont.res В вашей программе добавьте директиву компилятора, чтобы включить вновь созданный файл: {$R MyFont.res} Правильным будет разместить его в секции реализации после строчки {$R *.DFM}. Добавьте процедуру создания файла из ресурса, делающим шрифт доступным для использования. Пример: procedure TForm1.FormCreate(Sender: TObject); var Res : TResourceStream; begin Res := TResourceStream.Create(hInstance, 'MY_FONT', Pchar('ANYOL1')); Res.SavetoFile('Bauhs93.ttf'); Res.Free; AddFontResource(PChar('Bauhs93.ttf')); SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0); end; программное удаление шрифта: procedure TForm1.FormDestroy(Sender: TObject); begin RemoveFontResource(PChar("Bauhs93.ttf")) SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0); end; Извените, но больше сегодня не смогу написать, конец рабочего дня |
Отправлено: 19:35, 17-07-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Конкурс - [решено] 270 настроек панели управления в одной папке | Smarty | Microsoft Windows 7 | 28 | 13-02-2012 08:38 | |
Не работает GUI после выхода другова GUI | sashadeg | AutoIt | 3 | 15-05-2009 22:03 | |
[решено] проверка контрольной суммы | nix_lamer | Общий по Linux | 1 | 17-01-2007 08:40 |
|