Есть ли способ установить высоту консоли (в строках)? - PullRequest
1 голос
/ 11 февраля 2012

Можно ли установить, сколько строк будет печатать консоль, прежде чем начнет стирать верхние? Например, можно ли установить его на 3 и сделать видимыми только последние 3 строки? Итак:

std::cout<<"line 1!"<<std::endl;
std::cout<<"line 2!"<<std::endl;
std::cout<<"line 3!"<<std::endl;
std::cout<<"line 4!"<<std::endl;
system("pause");

Будет выводить:

line 3!
line 4!
Press any key to continue...

^ без создания полосы прокрутки на стороне.

Я пытался использовать Console::BufferHeight, но я не могу заставить его работать. Это единственная вещь, которую я смог найти, которая, кажется, близка к тому, что я хочу сделать: http://msdn.microsoft.com/en-us/library/system.console.bufferheight.aspx Но это просто показывает, как это прочитать, а не как установить размер. И по какой-то причине ввод только std::cout<<System::Console::BufferHeight; дает мне ошибки в области видимости. Любая помощь будет принята с благодарностью. Спасибо!

Ответы [ 3 ]

1 голос
/ 11 февраля 2012

Я думаю, вы хотите это:

Пример,

HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
SMALL_RECT rect = {0,0, 100, 100};
SetConsoleWindowInfo(hConsole, TRUE, &rect)

Естьпосмотрите также на них (поэкспериментируйте с ними):

Вот пример на MSDN здесь .

0 голосов
/ 09 октября 2013

Я бы посоветовал держать строки самостоятельно, в быстром классе, скажем, что циклы, где ставить следующую строку, с помощью итератора, который всегда установлен, чтобы указывать на следующую строку для ввода.
< бр /> Затем используйте FillConsoleOutputCharacter() для печати пробелов по линиям, которые вы ранее там напечатали.

Затем используйте SetConsoleCursorPosition() до четырех (или столько строк, сколько вам нужно) строк выше, где вы хотите, чтобы ваш ввод начинался, и выводите каждую строку в цикле, начиная с одной после вашего итератора. Это печатает все строки в порядке от старшего к младшему.



Это было давно, поэтому мои знания C ++ довольно туманные, но это должно быть довольно просто с стандартная библиотека и библиотека win32.

0 голосов
/ 11 апреля 2012

Я также новичок в программировании, но я попытался:

while(!cin.get())
{
}

, и это сработало, попробуйте поместить его в конец кода.Он будет творить чудеса на вашей консоли!

Попробуйте изменить его положение (поместите его в середину кода)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...