Консультация № 186869
27.11.2012, 13:39
99.51 руб.
0 5 2
Здравствуйте! У меня возникли сложности с таким вопросом: не знаю как позиционировать вывод текста в заданные координаты, а так же установить цвет текста и цвет фона в консольном приложении использую visual studio 2010.

Обсуждение

Неизвестный
27.11.2012, 13:58
общий
это ответ
Здравствуйте, Виталий!

Установить позицию:

Код:
BOOL SetConsoleCursorPosition(
HANDLE hConsoleOutput, // handle to screen buffer
COORD dwCursorPosition // new cursor coordinates
);


Цвет:

Код:
BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput, // handle to screen buffer
WORD wAttributes // text and background colors
);

wAttributes:

FOREGROUND_BLUE Text color contains blue.
FOREGROUND_GREEN Text color contains green.
FOREGROUND_RED Text color contains red.
FOREGROUND_INTENSITY Text color is intensified.
BACKGROUND_BLUE Background color contains blue.
BACKGROUND_GREEN Background color contains green.
BACKGROUND_RED Background color contains red.
BACKGROUND_INTENSITY Background color is intensified.
COMMON_LVB_LEADING_BYTE Leading byte.
COMMON_LVB_TRAILING_BYTE Trailing byte.
COMMON_LVB_GRID_HORIZONTAL Top horizontal.
COMMON_LVB_GRID_LVERTICAL Left vertical.
COMMON_LVB_GRID_RVERTICAL Right vertical.
COMMON_LVB_REVERSE_VIDEO Reverse foreground and background attributes.
COMMON_LVB_UNDERSCORE Underscore.


Получить хэндл консоли:

Код:
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
Неизвестный
27.11.2012, 14:01
общий
это ответ
Здравствуйте, виталий!
Для этого используется модуль windows.h и функции SetConsoleCursorPosition() и SetConsoleTextAttribute().
Код:

#include <iostream>
#include "windows.h"
using namespace std;

int main()
{
// Получаем дескриптор консоли
HANDLE hCon;
hCon = GetStdHandle(STD_OUTPUT_HANDLE);
cout << "Hello!";
COORD pos = {10, 10};
SetConsoleCursorPosition(hCon, pos);
SetConsoleTextAttribute(hCon, BACKGROUND_RED | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
cout << "Good Bye!";
pos.X = 0;
pos.Y = 20;
SetConsoleCursorPosition(hCon, pos);
system("PAUSE");
return 0;
}

5
Неизвестный
27.11.2012, 16:08
общий
хотел бы узнать сколько цветов доступно, можно ли использовать числовые значения RGB?
Неизвестный
27.11.2012, 16:18
общий
я так понял что цветов три: FOREGROUND_GREEN, FOREGROUND_BLUE, FOREGROUND_RED, остальные цвета получаются их комбинированием
Неизвестный
27.11.2012, 18:33
общий
FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY - для цвета символа
BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED, BACKGROUND_INTENSITY - фон символа

Все цвета в системе RGB кодируются комбмнациями 3х цветов. Можно использовать числовые значения вместо предопределенных констант.
Форма ответа