Как изменить шрифт консоли

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
cahek2000
Сообщения: 5
Зарегистрирован: 29 дек 2004, 06:48

Очередной раз столкнулся с проблемой (первый раз пару лет назад и несильно требовалось) и удивился, что до сих пор еще в инете не описано как ее решить.
А проблема очень простая:
Все, кто работает в win2k\xp, знают что консоли есть куча настроек, в том числе и установка шрифта! Так вот просто напросто требуется поменять шрифт программным способом!
Единственно, что мне удалось нарыть, так это то, что сделать это можно при помощи НЕДОКУМЕНТИРОВАННОЙ функции SetConsoleFont. Мне даже удалось найти какие параметры передаются в эту функцию:

Код: Выделить всё

function SetConsoleFont(hConsoleOutput: THandle; IdFont: Cardinal):LongBool;
, где hConsoleOutput получается GetStdHandle(STD_OUTPUT_HANDLE),
а вот IdFont - это индекс шрифта у консольки.
По умолчанию у консольки порядка 12 шрифтов, которые и можно установить таки образом, но требуется УСТАНОВИТЬ ШРИФТ Lucida console ЛЮБОГО РАЗМЕРА!
Опытом путем было установлено, что при установлении (непрограммым способом во время работы программы) таких "нестандартных" шрифтов просто напросто они добавляются в "стандартный масив шрифтов" и после этого их можно было использовать и в пограмме.

Помогите справиться с этой проблемой!!!
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Не знаю, никогда не пробовал. А если в реестре покопаться? Имею в виду ключи
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MS-DOS Emulation\Font
Единственно, что мне удалось нарыть, так это то, что сделать это можно при помощи НЕДОКУМЕНТИРОВАННОЙ функции SetConsoleFont.
Да уж, мелкософтные отличаются известной любовью к разработчикам :(
cahek2000
Сообщения: 5
Зарегистрирован: 29 дек 2004, 06:48

Ну и что? Заглянул я туды, нашел лишь один строковый параметр с именем "0" и значением "Lucida Console", и что толку???
Проблема-то так и осталась!! Шрифт (гарнитуру и размер) так и не известно как устанавливать!
Ответить