Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛЕБЕДКО ЛАБ / Лабка 7

.docx
Скачиваний:
10
Добавлен:
26.03.2015
Размер:
91 Кб
Скачать

Отчет ЛЕБЕДКО И.А.

ЗФ ИСиТ 3 курс

Лабораторная работа №7

Работа с консолью.

Задание 1. Программное изменение координат курсора.

voidPrintToTheCursorPosition()

{ HANDLEconsoleOutput;

COORD cursorPos;

consoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);

cursorPos.X = 30;

cursorPos.Y = 3;

SetConsoleCursorPosition(consoleOutput, cursorPos);

printf("Test string at position (30, 3)");

cursorPos.X = 15;

cursorPos.Y = 8;

SetConsoleCursorPosition(consoleOutput, cursorPos);

printf("Test string at position (15, 8)");

}

Создаем хэндл консоли, структуру для координат, и, вручную изменяя координаты позиции курсора посредством функции SetConsoleCursorPositionвыводим текст в разных местах консоли.

Задание 2. Ко всему прочему добавляем цвет

voidPrintToTheCursorPositionWithAColor()

{ HANDLEmyConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);

DWORD cCharsWritten;

TCHAR str[] = TEXT("HELLO TO EVERYBODY\n");

HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");

SetConsoleFont = (SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");

if (!SetConsoleFont)

{ std::cout<<"error\n" ;

exit(1);

}

SetConsoleFont(myConsoleHandle,5);

SetConsoleTextAttribute(myConsoleHandle,FOREGROUND_GREEN | FOREGROUND_INTENSITY);

int x = 5; int y = 6;

COORD pos = {x, y};

HANDLE hConsole_c = CreateConsoleScreenBuffer( GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);

SetConsoleActiveScreenBuffer(hConsole_c);

DWORD len = 18;

DWORD dwBytesWritten = 0;

WriteConsoleOutputCharacter(hConsole_c, str, len, pos, &dwBytesWritten);

pos.X=10;

pos.Y=8;

WriteConsoleOutputCharacter(hConsole_c, str, len, pos, &dwBytesWritten);

pos.X=15;

pos.Y=10;

SetConsoleCursorPosition(myConsoleHandle, pos);

WriteConsoleOutputCharacter(hConsole_c, str, len, pos, &dwBytesWritten);

getchar();

CloseHandle(hConsole_c);

}

ЦветамыизменяемспомощьюфункцииSetConsoleTextAttribute.

Задание 3. Управление цветами вывода

voidRainbowText()

{ HANDLEhstdin = GetStdHandle( STD_INPUT_HANDLE );

HANDLE hstdout = GetStdHandle( STD_OUTPUT_HANDLE );

WORD index = 0;

CONSOLE_SCREEN_BUFFER_INFO csbi;

GetConsoleScreenBufferInfo(hstdout, &csbi );

SetConsoleTextAttribute(hstdout, 0xEC );

std::cout<<"Press any key to quit.\n";

while (index<13)

{ SetConsoleTextAttribute(hstdout, colors[ index ] );

std::cout<<"\t\t\t\t Hello World \t\t\t\t"<<std::endl;

if (++index >sizeof(colors)/sizeof(colors[0]))

break;

}

FlushConsoleInputBuffer(hstdin );

SetConsoleTextAttribute(hstdout, csbi.wAttributes );

}

Тут в цикле изменяем цвет для каждой строки.

Задание 6. Управление цветами и положением вывод.

voidPrintArroundAndColor()

{ HANDLEconsoleOutput;

COORD cursorPos;

consoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);

WORD index = 0;

CONSOLE_SCREEN_BUFFER_INFO csbi;

GetConsoleScreenBufferInfo(consoleOutput, &csbi );

cursorPos.X = 30;

cursorPos.Y = 3;

SetConsoleCursorPosition(consoleOutput, cursorPos);

SetConsoleTextAttribute(consoleOutput, 0xEC );

printf("Test string at position (30, 3)");

cursorPos.X = 15;

cursorPos.Y = 8;

SetConsoleCursorPosition(consoleOutput, cursorPos);

index++;

SetConsoleTextAttribute(consoleOutput, colors[ index ] );

printf("Test string at position (15, 8)");

}

Задание 5. Нарисуем цветной столбик.

void MyLittleProgramm1()

{ HANDLEconsoleOutput;

COORD cursorPos;

consoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);

CONSOLE_SCREEN_BUFFER_INFO csbi;

GetConsoleScreenBufferInfo(consoleOutput, &csbi );

cursorPos.X = 30;

int i=3;

while(i<15)

{ cursorPos.Y = i;

SetConsoleCursorPosition(consoleOutput, cursorPos);

SetConsoleTextAttribute(consoleOutput,FOREGROUND_GREEN | BACKGROUND_GREEN);

printf("Invisibleline");

i++;

}

}

Задание 6. Нарисовать таблицу.

voidCreateTable(intStolb, intStr)

{ HANDLE consoleOutput;

COORD cursorPos;

consoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);

CONSOLE_SCREEN_BUFFER_INFO csbi;

GetConsoleScreenBufferInfo( consoleOutput, &csbi );

intcX=5,cY=5,X=70;

cursorPos.Y=5;

while(cX<X)

{ cursorPos.X=cX;

SetConsoleCursorPosition(consoleOutput,cursorPos);

puts("_");

cX++;

}

while(cY<(5+(2*Str)))

{ cX=4;

while(cX<=X)

{ if(cX==4 || cX==70 || (cX%(73/Stolb))==0 )

{ cursorPos.X=cX;

for(int i=1; i<3; i++)

{ cursorPos.Y=cY+i;

SetConsoleCursorPosition(consoleOutput,cursorPos);

puts("|");

}

cX++;

}

else cX++;

}

cY+=2;

cX=5;

while(cX<X)

{ if(cX%(73/Stolb)==0) { cX++; continue; }

cursorPos.X=cX;

SetConsoleCursorPosition(consoleOutput,cursorPos);

puts("_");

cX++;

}

}

}

Универсальная функция для рисования таблицы. Например, результат при аргументах 5,7:

Соседние файлы в папке ЛЕБЕДКО ЛАБ