рекламная строчка Nolix

суббота, 16 января 2016 г.

Рисование мышкой в консоли (с++)

Оказывается, в консоли можно сотворить даже что-то типа графического редактора paint. Ниже показан код, как это делается. И добавлены некоторые комментариями.


using namespace std;

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE),
hIn = GetStdHandle(STD_INPUT_HANDLE);

void main()
{
CONSOLE_CURSOR_INFO cinfo = {100, false};
SetConsoleCursorInfo(hOut, &cinfo);//скрыли курсор
COORD c = { 0, 0 };
DWORD d;
CONSOLE_SCREEN_BUFFER_INFO csbi;
INPUT_RECORD ir;
         // устанавливаем режим консоли
SetConsoleMode(hIn, ENABLE_MOUSE_INPUT | ENABLE_INSERT_MODE);
while (1)  // бесконечный цикл
{
while (ReadConsoleInput(hIn, &ir, 1, &d))  // считываем инфу из входного потока
{
if (ir.EventType == MOUSE_EVENT)   // если произошло некое событие с мышью
{
if (ir.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)  // если нажата левая кнопка мыши
{
 // курсор ставится в позицию, где кликнула мышь
         SetConsoleCursorPosition(hOut, ir.Event.MouseEvent.dwMousePosition);
cout << '*';   // при каждом клике левой кнопкой рисуется символ "звездочка"
}
                      // при нажатии правой кнопки мыши всё перекрашиваем в черный цвет (стираем)
else if (ir.Event.MouseEvent.dwButtonState==RIGHTMOST_BUTTON_PRESSED)
{
GetConsoleScreenBufferInfo(hOut, &csbi);
FillConsoleOutputAttribute(hOut, 0, csbi.dwSize.X*csbi.dwSize.Y, c, &d);
}
}
}
}
}
Рисование окон в консоли

Комментариев нет:

Отправить комментарий