Тема: Помилка фарбування консолі

Доброго дня! Я код зкопіпастив із сайту. Після цього вирішив його пофарбувати - і зкопіпастив
додавання з іншого сайту. Ось що цікаво, прям так воно не робить, чи то йому якоїсь
библиотеці нехвата чи то що... Не знаю що робити, ну додав enum - начебто самє найздоровіша ідея.
Але як пронумєровати enum не по зрастаючої я не розумію. Написав int BLINK=128;
тут те і почалося саме найцікавіше. Звідки, я вас запитую, звідки воно зна,
що BLINK і тє що я вписав в enum це однє й те ж саме?


Ошибка    1    error C2065: GREEN: необъявленный идентификатор    d:\rozbir\ console\consolecursor\consolecursor\consolecursor.cpp    59    1    ConsoleCursor
Ошибка    2    error C2065: RED: необъявленный идентификатор    d:\rozbir\ console\consolecursor\consolecursor\consolecursor.cpp    60    1    ConsoleCursor

Розкоментував enum

Ошибка    2    error C2440: инициализация: невозможно преобразовать "int" в "main::Kolory"    d:\rozbir\ console\consolecursor\consolecursor\consolecursor.cpp    57    1    ConsoleCursor
Ошибка    1    error C2628: недопустимый "main::Kolory" с последующим "int" (возможно, отсутствует ";")    d:\rozbir\ console\consolecursor\consolecursor\consolecursor.cpp    57    1    ConsoleCursor

2

Re: Помилка фарбування консолі

а код де?

Re: Помилка фарбування консолі

#include <cstring>
#include <iostream>
#include <windows.h>
#include <conio.h> //Необходимые библиотеки
 
#define WIDTH 80 // Макрос ширины

#define HEIGHT 22  // Макрос высоты
 
int main(){
    char str[] = "Hello, world!";    // Создал переменную  символьного типа и положил в нее фразу! 
    HANDLE hCon;                     // Задал имя заголовка который будет использовать в дальнейшем
    COORD cPos;                       // Задал назву обєкту для кординат X и Y. Тип Short - целочисленный знаковый тип
    
    hCon = GetStdHandle(STD_OUTPUT_HANDLE); /*Если в подробности не вдаваться,
                                            можно представлять себе хендл, как некоторое число, которое винда присваивает любому создаваемому элементу 
                                            (будь то окно на экране, кнопка в этом окне, или внешнее устройство какое-нибудь), чтобы отличать его от всего остального.
                                            При запуске консольного приложения система связывает с ним три файла - стандартный ввод (клава), стандартный вывод (то самое консольное окно), 
                                            стандартный вывод ошибок (как правило, связывается с тем же стандартным выводом, только не буферизируется). 
                                            Если программа запускается из консоли, ОС связывает вывод с той же консолью, если нет - система создаст новую консоль и откроет программу в ней. 
                                            В любом случае хендл той консоли, в которой программа выполняется, вернёт GetStdHandle(STD_OUTPUT_HANDLE). 
                                            Соответственно SetConsoleCursorPosition(hCon, cPos) будет устанавливать курсор в той самой консоли, хендл которой мы ей параметром передали. */
 
    cPos.Y = HEIGHT / 2;                        // Задает координаты для Y
    cPos.X = ( WIDTH - strlen(str) ) / 2;    // Задает координаты для X
    SetConsoleCursorPosition(hCon, cPos); // SetConsoleCursorPosition Установить курсор на позицию  
                                                             // заголовка hCon в координаты cPos
 
    std::cout << str << std::endl;             // std - Стандартная библиотека языка С++ 
        // Тут не обязательно писать std::cout ... Можно так же благополучно написать  перед функцией 
        // int main() using namespace std (использовать стандартное пространство имен std).
        // и тогда можно использовать такой вывод: cout << str << endl;
                                                           
 
    std::cin.get();        // Читает символ с консоли. 

/*      enum Kolory{
    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

}
   int BLINK=128;*/

    textbackground(GREEN); //Цвет фона.
textcolor(RED); //Цвет текста.

 std::cin.get();        // Читает символ с консоли. 



    return 0;                // Возвращает значение 0 тем самым благополучно закрывая программу!  
}

4

Re: Помилка фарбування консолі

Вангую, що ті костанти є в

#include <windows.h>

чи

#include <conio.h>
Подякували: Дмитро-Чебурашка, koala2

5

Re: Помилка фарбування консолі

Ви використовуєте різні бібліотеки, що мають схожу фунціональність - conio.h (для DOS) та windows.h (здогадайтеся). Не робіть так, і не матимете дурних питать. Колір в консолі windows встановлюється функцією SetConsoleTextAttribute.

Подякували: Дмитро-Чебурашка1

6

Re: Помилка фарбування консолі

А хіба не треба включати бібліотеку <graphics.h>!?