Как сделать консольное окно белым

Добавил пользователь Cypher
Обновлено: 05.10.2024

Консольное приложение - это программа без графического интерфейса (в простонародьи её иногда называют “досовская программа”). То есть обычное окошко для ввода команд. Иногда в консольных приложениях используют псевдографику, чтобы улучшить взаимодействие с пользователем. Кое-какую дополнительную информацию можно также найти здесь.

Однако эта статья будет не о консольных приложениях, а о свойствах окна консольного приложения в Windows.

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

Итак, чтобы получить доступ к свойства окна консоли, надо щёлкнуть левой кнопкой мыши по заголовку окна и в открывшемся меню выбрать СВОЙСТВА.

Откроется окно с несколькими вкладками:

  • Общие. Здесь можно установить общие свойства консольного приложения, такие как размер курсора или режим отображения окна (в окне или во весь экран).
  • Шрифт. Здесь можно установить шрифт, которым выводится текст в окне консоли. Это, пожалуй, один из самых полезных параметров, так как по умолчанию шрифт обычно довольно мелкий, и разглядывать его в оконном режиме многим людям сложновато.
  • Расположение. Здесь обычному пользователю можно ничего не изменять.
  • Цвета. Тоже не очень полезная вкладка. Хотя если вам не нравится серый текст на чёрном фоне, то вы можете это изменить. Но следует помнить, что консольные программы могут самостоятельно изменять эти параметры, и ваши настройки могут не сработать.

Когда вы установите все интересующие вас настройки, нажмите кнопку ОК. Появится окно с выбором варианта сохранения настроек консоли. Варианты могут быть следующие:

  1. Изменить свойства только для текущего окна.
  2. Сохранить свойства для других окон с тем же именем.

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

Чтобы сохранить настройки навсегда и чтобы данная программа всегда работала с вашими настройками, необходимо при сохранении настроек выбрать второй вариант.

Правда начинающих программистов здесь ждёт сюрприз - при перекомпиляции программы ваши настройки всё-равно будут сброшены. Однако пользователей это не должно волновать.

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

Но говорил, что такие функции существуют и не мало! Ну, ясно, что я сразу полез искать в Интернете. И естественно там я ничего не поFINDил. И я уже совсем расстроился, как случилось чудо. На уроке информатики, где мы изучали MS Word и DOS , заскучал и полез искать хлам на винте. И случайно увидел какие-то исходники…

Ну естественно я их начал читать. и Тогда я увидел, что есть умные люди в универе, они вручную перевели из Ansi в OEM кодировку и засунули в исходник текст, что позволило работать с русскими словами в с++ и выводить русские буквы в консоль (Об этом позже.). Я подумал "Алелуя! Здесь есть умные люди". И радости моей не было пределе, а того чувака я так и не нашёл :(. Но, запустив этот исходник в билдере я уж посильнее удивился. Он покрасил текст и фон в консольном приложении. Ну, блин, я сразу взялся всё переписывать в тетрадь. И вот теперь я доношу эту инфу до вас!

Текст покрасить можно разными цветами и делаем это так:

// В справке указано только КОНИО, но так у меня не работает.
// Ширина экрана (в символах) в DOS всегда 80 (а высота - 25 строк).

textbackground(GREEN); //Цвет фона.
textcolor(RED); //Цвет текста.
clrscr(); //Очищаем экран (Не обязательно!)

Вот привожу таблицу цветов:

BLACK 0
BLUE 1
GREEN 2
CYAN 3
RED 4
MAGENTA 5 //Цвета писать в верхнем регистре а команды в нижнем.
BROWN 6
LIGHTGRAY 7
DARKGRAY 8
LIGHTBLUE 9
LIGHTGREEN 10
LIGHTCYAN 11
LIGHTRED 12
LIGHTMAGENTA 13
YELLOW 14
WHITE 15
BLINK 128

С английским разбирайся сам.
Можно юзать эту функцию со смесью цветов:

С этой функцией я долбался очень долго!

Теперь перейдем к следующей функции: WINDOW
Она позволяет, как окрасить нужную часть экрана, так и позволить вводить там текст, подобно gotoxy(); или (LOCATE - В бейсике).
Эту функцию нужно юзать с теми же библиотеками, что и textcolor.

clrscr();
textbackground(GREEN);
textcolor(RED);
window(30,10,50,10); //Вот и она.
clrscr();

Результат работы этого сыра смотри сам! И поймешь!
Вот тебе вырезка из справки Билдера

Прототип
void window(int left, int top, int right, int bottom);

С английскими словами проблем быть не должно!

Если window не использовать, то она равна по умолчанию первой строке и первому столбцу.

Эти функции можно использовать несколько раз в программе:

Комментарии

Спасибо, помогло. Пиши еще всякого рода мелочи. Мне как для новичка очень интересно.

Для студии пожалуйста оптимизируйте, а то ничего не работает. (Microsoft Visual Studio 2005/2008)

Это ты уж как-нибудь сам оптимизируй.

Фэйл. Так и не разобрался… Компилирую gcc из под linux. Не работает…

using namespace std;

там где инклуды скрыты и (iostream и windows.h в )

Василий, пиши так:
system(“color F0”); //F – цвет фона, 0 – цвет текста

Вот таблица цветов:
0 = Black 8 = Gray
1 = Blue 9 = Light Blue
2 = Green A = Light Green
3 = Aqua B = Light Aqua
4 = Red C = Light Red
5 = Purple D = Light Purple
6 = Yellow E = Light Yellow
7 = White F = Bright White

А как сделать чтобы при вводе с клавиатуры, вводимый текст уже был окрашен в какой-либо цвет?

Проблема заключается в том, что цвет фона применяется только там, где текст написан, а не для свободного места.

Теперь, с приведенным выше кодом, он действительно превращает текст в синий цвет, но он только превращает фон текста в белый цвет, а не весь фон окна консоли.

The background only covers the background of the text, not of the entire console window

Вот пример того, что я имею в виду:

Как вы можете видеть, белый фон отображается только за текстом и не меняет цвет всего окна консоли.

Некоторые приемы по управлению цветом и позиционированием текста в консольных приложениях как в DOS/Windows, так и в UNIX.

Многие считают, что консольная программа может выглядеть лишь черно-белой и невзрачной, "радуя" пользователя только сухими строчками текста. В лучшем случае при выводе табличных данных они более-менее выравниваются и обрамляются псевдографикой из плюсов-минусов (кстати, так же делали при печати таблиц на пишущих машинках в докомпьютерную эпоху). Между тем не так давно, когда Windows и Mac еще не приучили мир к графическому интерфейсу, программы отлично рисовали цветные таблички-окошки безо всякой графики. До сих пор вы можете найти такие программы, например, широко распространенный файловый менеджер Far, один из последователей знаменитого Norton Commander. Более того, некоторые программы (например текстовая версия Norton Utilities) создавали "почти графический" интерфейс, заменяя таблицу символов видеоадаптера и даже делая это "на лету" для вывода полноценного графического курсора мыши. Я не буду рассматривать последний случай (скорее всего, для написания графического приложения вы будете использовать графическую платформу, например Windows), а вот о том, как красиво оформить консольное приложение, пару слов скажу.

Для начала раскрасим стандартный черно-серый экран. Если вы используете обычный вывод в консоль (например, в C это функции семейства printf), то предпочтительный способ управления цветами зависит от платформы, под которую разрабатывается приложение. Если это UNIX, то самым простым и естественным способом установки цвета, а также и позиционирования курсора, будут ESC-команды. Это последовательности символов, начинающиеся с комбинации "\x27[" ( \x27 – это и есть код символа ESC), за которой следуют параметры через запятую. Здесь и далее все справочные материалы вынесены во всплывающие окна. Вот таблица ESC-последовательностей для управления курсором и цветами выводимого текста.

Везде в тексте ESC обозначает символ с кодом 27 (0x1B), буквы x , y , n – переменные, значения которых записываются в десятичной форме.

ESC[y;xH или ESC[y;xf – переместить курсор в позицию (x,y).

ESC[yA – переместить курсор на y строк вверх.

ESC[yB – переместить курсор на y строк вниз.

ESC[xC – переместить курсор на x символов вправо.

ESC[xD – переместить курсор на x символов влево.

ESC[nm или ESC[n;nm ESC[n;n;nm – установить атрибуты вывода текста. Список атрибутов следующий:

Атрибут Значение n
Установить атрибуты по умолчанию 0
Полужирный шрифт 1
Подчеркнутый шрифт 4
Черный цвет символов 30
Красный цвет символов 31
Зеленый цвет символов 32
Желтый цвет символов 33
Синий цвет символов 34
Малиновый (magenta) цвет символов 35
Бирюзовый (cyan) цвет символов 36
Белый цвет символов 37
Черный цвет фона 40
Красный цвет фона 41
Зеленый цвет фона 42
Желтый цвет фона 43
Синий цвет фона 44
Малиновый (magenta) цвет фона 45
Бирюзовый (cyan) цвет фона 46
Белый цвет фона 47

ESC-последовательности можно использовать и в Windows-консоли, но для этого потребуется специальный драйвер ansi.sys, который может быть и не установлен у пользователя вашей программы. Поэтому для приложения под Win32 лучше использовать функции, специально предназначенные для оформления вывода в консоль. Функция SetConsoleTextAttribute позволяет установить цвета и другие атрибуты (например, подчеркивание), а функция GetConsoleScreenBufferInfo — получить текущие значения атрибутов и различные другие параметры. Принцип установки атрибутов очень прост: все символы, выведенные после вызова SetConsoleTextAttribute будут иметь установленные атрибуты. Устанавливаете нужные цвета, печатаете текст этими цветами, устанавливаете цвет следующей порции текста, выводите его, и так далее. Подробное описание этих функций доступно в MSDN (щелкните по имени функции), я его не буду повторять, а сразу приведу пример использования, из которого будет все понятно.

Теперь рассмотрим способы, которыми можно нарушить стандартный порядок "слева-направо сверху-вниз" вывода данных в консоль. Сразу замечу, что как только вы начинаете использовать позиционирование при выводе, результат работы программы будет, скорее всего, непригоден для перенаправления в файл. Если раскраска при выводе в файл будет просто проигнорирована (при использовании ESC-последовательностей они останутся в файле, но зато вы сможете просто вывести файл на консоль и весь текст будет вновь раскрашен, как при работе программы), то позиционирование приведет к тому, что вывод на экран и текст в файле будут отличаться друг от друга, возможно очень сильно. Но в любом случае, знать некоторые приемы не помешает.

Прием первый: динамическая строка.

Пока вы не перевели строку при выводе, ее содержимое можно активно менять. Этим, например, можно пользоваться для отображения прогресса какой-либо длительной операции. Для изменения содержимого строки можно поступить двумя путями.
Первый: удаляем выведенные символы с помощью символа "backspace" с кодом 8. Он возвращает курсор на одну позицию назад, символ, правда, не стирает, но позволяет записать другой поверх. В этом случае нужно точно считать число выведенных символов, чтобы всегда знать позицию курсора.
Второй: вернуться к началу строки и напечатать новую. Для возврата к началу строки БЕЗ перехода на новую, используйте символ "CR" (Carrige Return) с кодом 13 (0x0C). После этого напечатайте новую строку, заведомо длиннее уже выведенной, чтобы затереть все старые символы (если вы не хотите добиться специальных эффектов, обновляя только начало строки).

Прием второй: прямое управление курсором

В случае UNIX-приложения можно использовать уже описанные в разделе про цвет ESC-последовательности. Windows же предоставляет две функции для управления курсором в консоли: SetConsoleCursorPosition позволяет установить позицию курсора, а GetConsoleScreenBufferInfo позволяет получить текущие координаты курсора, размер консоли, положение видимой области (если включена прокрутка) и другие атрибуты. Обе эти функции используют дескриптор консоли, процесс получения которого уже был рассмотрен выше. Как и раньше, ограничусь примером.

Чтобы придать выводимому тексту красивый и законченный вид, можно использовать рамки. Особенно уместно они выглядят при выводе табличных данных, однако их можно использовать и для оформления ввода данных (приглашение и поле для ввода оформить в рамку), а при желании можно создать собственную псевдографическую оконную библиотеку (вспомним TurboVision и его многочисленные аналоги, столь популярные лет 10-15 назад). Псевдографику можно использовать и совсем нетрадиционным способом, как это сделано, например, в моем анализаторе COM-порта. Рамки и линии рисуются с помощью набора из 40 символов, 4 из которых являются прямыми линиями (вертикальные/горизонтальные, одинарные и двойные), а оставшиеся 36 – уголками и соединениями между ними во всех возможных комбинациях. Ниже приведена таблица всех этих символов в двух кодировках: CP866 (консоль DOS/Windows – верхняя строка) и KOI-8R (нижняя строка). Первой пользуемся в Windows, второй в UNIX. Числа в шестнадцатеричном представлении, префиксы (типа \x или 0x) опущены для краткости.

Таблица символов псевдографики для рисования рамок


Командная строка существует уже давно, и, хотя это чертовски полезный инструмент, он всегда был простым и скучным с тем же черным фоном и белым текстом.

Тем не менее, так выглядит программа по умолчанию. На самом деле, вы можете настроить многие аспекты опыта, чтобы сделать её более персональной, используя разные шрифты, цвета и расположение окон. Кроме того, если вы используете Windows 10, вы даже можете сделать консоль полупрозрачной и использовать пользовательские цветовые схемы для быстрого изменения внешнего вида.

В этом руководстве по Windows 10 мы расскажем, как персонализировать работу с командной строкой, чтобы сделать её менее скучной.

Как настроить курсор в командной строке

Чтобы настроить размер мигающего курсора в командной строке, выполните следующие действия:

Переход к настройкам курсора командной строки Windows

  • Маленький (по умолчанию).
  • Средний
  • Большой
  • Значения по умолчанию: изменения, которые вы настраиваете с помощью этого параметра, не влияют на текущий сеанс, но новые параметры будут применяться при запуске командной строки с использованием любого ярлыка.
  • Свойства: изменения, сделанные с помощью этой опции, будут применяться к текущему и будущим сеансам. Однако эти настройки будут применяться только к ярлыку, свойства которого были настроены. (Этот параметр обычно бывает полезен, когда вы пытаетесь настроить соответствующие параметры для различных задач.)

Как настроить размер шрифта и семейство в командной строке

Используя параметры командной строки, вы можете указать размер шрифта и семейство шрифтов в соответствии со своими предпочтениями, выполнив следующие действия:

Настройка размера курсора командной строки

Настройка шрифта командной строки

Когда вы сделаете выбор, внизу страницы вы увидите предварительный просмотр новой конфигурации.

Как настроить макет в командной строке

Чтобы использовать пользовательский макет в командной строке, выполните следующие действия.

Настройка буфера экрана командной строки

Совет: если вы хотите отрегулировать параметр ширины, не забудьте снять отметку с Перенос текстового вывода при изменении размеров .

Размер буфера использует координатную сетку для символьных ячеек, это означает, что ширина – это количество символьных ячеек, которые могут поместиться в каждой строке, а высота – это количество строк. Чем больше ширина и высота, тем больше контента вы можете просмотреть, но эти настройки не влияют на размер консоли. (Обычно не нужно изменять эти настройки, если у вас нет причины.)

Настройка размера окна командной строки

Настройка положения окна командной строки Windows

При внесении изменений в правой части страницы вы увидите предварительный просмотр новой конфигурации.

Как настроить цвет и прозрачность в командной строке

Если вы хотите сделать работу с командной строкой менее скучной, вы также можете изменить цвет текста и фона, а в Windows 10 вы можете сделать окно консоли полупрозрачным (как в Linux), выполнив следующие действия:

Добавление расцветки командной строке Windows

Настройка прозрачности окна командной строки Windows

Кроме того, вы можете изменить прозрачность для текущего сеанса, не открывая настройки, используя комбинацию Ctrl + Shift + Колесико мыши .

Читайте также: