2014-11-30 3 views
0

Я использую SetConsoleDisplayMode() для переключения консоли в полноэкранный режим. Это 80x25, в центре с небольшим шрифтом, который я хотел бы увеличить.Установить размер шрифта консоли в полноэкранном режиме

Я все еще работаю над WinXP, поэтому SetCurrentConsoleFontEx() не является для меня вариантом. Я нашел this link, который описывает некоторые недокументированные функции, включая SetConsoleFont(). Они отлично работают: GetNumberOfConsoleFonts() возвращает 9 используемых шрифтов в моей системе, и я могу выбрать их, однако под полноэкранным шрифтом 0 был найден шрифт, что означает, что он не поддерживается.

Я также попытался создать ярлык для программы и установить там консоль, но нет полноэкранного режима, и после переключения на полноэкранный режим все настройки шрифтов отбрасываются.

Я хотел бы убедить экран, чтобы показать хороший шрифт большого текста, как в научно-фантастических фильмах или в старой старой сборке сборок BIOS. Возможно ли это под XP?

+0

Downvote? Пожалуйста, скажите мне, что не так с моим вопросом: я приложил все усилия, чтобы решить эту проблему, и я не собираюсь испортить ее с причинами, почему XP. Если вы даже потрудились посетить ссылку, вы можете узнать, что до сих пор не хватает многих функций даже в текущей версии Windows. Вы могли бы хотя бы прокомментировать, почему шрифты не поддерживаются в полноэкранном режиме :-( –

ответ

2

Полноэкранный режим консоли переключает адаптер дисплея в текстовый режим 80x25 VGA.

Таким образом, визуализация шрифтов совершенно различна. В обычном окне консоли шрифт отображается с использованием GDI; в полноэкранном режиме Windows записывает код символа в буфер отображения, а оборудование отображает шрифт.

VGA поддерживает загружаемые шрифты, и Windows использует эту функцию для поддержки своих различных языковых версий. Я не помню, если шрифт исправлен языковой версией Windows или если она выбрана в соответствии с текущей кодовой страницей. (Полноэкранный режим не работает на x64, и у меня нет 32-разрядной системы, чтобы попробовать его.)

Я не знаю, как вы получаете какой-либо выбор в используемом шрифте VGA, хотя, вероятно, есть пробег в перезаписи шрифтов VGA в каталоге Fonts. Хотя, очевидно, это не то, что вы хотели бы делать на производстве.

Наконец, возможно изменить шрифт, используя реальное приложение DOS! Я знаю, что Windows NT ловушки некоторых связанных с видео IO и передает их на аппаратное обеспечение. Это не очень полезно.

+0

Хм ... У меня возникает соблазн установить Turbo C 3.0 и сделать ретро-программирование ;-) Это было так быстро, легко и весело ... Я действительно искушаюсь! –

+0

@ JanTuroň Даже если он работает в DOS, вы потеряете изменения, как только программа DOS выйдет. Я не сделал этого очень ясно. Тем не менее, это может быть весело. – arx

1

Вы пытались написать GetLastError()? Мое мнение таково, что это не будет работать на Windows 7 или более поздней версии. Возможно, вы могли бы попробовать следующее: #define _WIN32_WINNT 0x0601

Cheers!

+0

Да, я использую '_WIN32_WINNT 0x0501' (XP).' GetLastError() 'возвращает 1007 в полноэкранном режиме * Запрошенная операция не может быть выполнена в полноэкранном режиме mode. * Грустно, но спасибо в любом случае. –

+0

Всегда пожалуйста! Одна вещь, которую вы могли бы попробовать, - отключить адаптеры дисплея с помощью C++, что изменит ваше разрешение и, возможно, тогда вы сможете переключиться в полноэкранный режим. уйти, включить адаптеры отображения снова. – ProXicT

Смежные вопросы