Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2013, 21:03   #1
Berlioz
Изучающий C и ASM
Пользователь
 
Регистрация: 25.05.2012
Сообщений: 89
Вопрос Смена активного шрифта в консоли

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

Всякие SetConsoleCP, chcp и AppLocale затыкаются, т.к. в реестре прописана 850 кодовая страница, которая знать не знает про русские символы. Шрифт загружается соответствующий (без русских символов).

Что можно сделать?

P.S. SetConsoleFont вроде как может переключать шрифт, но она недокументирована

Последний раз редактировалось Berlioz; 28.12.2013 в 22:14. Причина: Уточнение кодовой страницы
Berlioz вне форума Ответить с цитированием
Старый 28.12.2013, 22:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ха!... Зачетная проблема )
Я когда то столкнулся с похожим.
1) Попробовал в консоли юникод, вроде прокатило но были свои гнилушки
2) Тупо переделал в оконку с Мемо полем. И на сим проблема закрылась (Оконку раскрасил под цвет консоли - юзера тупо ниче не заметили )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.12.2013, 12:33   #3
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Цитата:
Сообщение от Berlioz Посмотреть сообщение
Всякие SetConsoleCP, chcp и AppLocale затыкаются, т.к. в реестре прописана 850 кодовая страница, которая знать не знает про русские символы. Шрифт загружается соответствующий (без русских символов).
Что я делаю не так? Что Far делает не так?

Ладно, пусть Far выводит в консоль через WriteConsoleW, но и в обычной программе всегда есть возможность выставить SetConsoleOutputCP(CP_UTF8), после чего выводить текст в UTF-8. Работает, начиная с Windows XP.

Кроме того, как мне кажется, можно выставить и SetConsoleOutputCP(866) или SetConsoleOutputCP(1251) даже в немецкой Windows, только шрифт консоли установить Lucida Console, как на скриншоте.
Код:
REGEDIT4

[HKEY_CURRENT_USER\Console]
"FaceName"="Lucida Console"
"FontFamily"=dword:00000036
"FontWeight"=dword:00000190
"FontSize"=dword:000e0000
Изображения
Тип файла: png Тестовая папка.png (3.3 Кб, 80 просмотров)
Vapaamies вне форума Ответить с цитированием
Старый 29.12.2013, 13:49   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
даже в немецкой Windows
Увы с такими видовсами проблемок всетки не оберешся. Я сталкивался с ними не заводе. Не всегда и помогает даж юникод.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.12.2013, 16:57   #5
Berlioz
Изучающий C и ASM
Пользователь
 
Регистрация: 25.05.2012
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Vapaamies Посмотреть сообщение
только шрифт консоли установить Lucida Console
Хорошо! С этим разобрался. Если ставить вручную, то все нормально.

Вопрос по ходу: как Far меняет шрифт с точечного на Lucida? Читал, что это недокументированная функция SetConsoleFont, но так и не понял.

UPD: Экспериментально выяснил, что SetConsoleFont(GetStdHandle(STD_OUT PUT_HANDLE),6) в Windows 7 ставит Lucida 12

Последний раз редактировалось Berlioz; 29.12.2013 в 17:04.
Berlioz вне форума Ответить с цитированием
Старый 29.12.2013, 17:12   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

http://blogs.msdn.com/b/oldnewthing/...6/2659903.aspx
waleri вне форума Ответить с цитированием
Старый 29.12.2013, 17:35   #7
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,799
По умолчанию

Цитата:
Сообщение от Berlioz Посмотреть сообщение
Вопрос по ходу: как Far меняет шрифт с точечного на Lucida?
Far никак не меняет, это я на всех своих системах глобально меняю, потому что часто работаю с консолью, и мне нужен Юникод. У консольной программы в ярлыке вроде задать можно.
Vapaamies вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена шрифта Станислав Д C# (си шарп) 1 25.12.2013 10:38
Смена шрифта Ekzamenator Помощь студентам 3 15.04.2011 17:45
Смена стиля шрифта Pein95 Общие вопросы Delphi 3 01.03.2011 15:05
Смена цвета фона и шрифта в консоли Hemul Visual C++ 3 27.01.2011 16:03
Поиск активного окна Arigato Win Api 5 22.11.2008 18:32