Получение индекса цвета в консольной палитре уже введенного текста - C ++ - PullRequest
0 голосов
/ 04 апреля 2020

Я хочу прочитать индекс в цветовой палитре консоли уже введенного (напечатанного в моем случае) символа в консоль. Что это значит? Вчера я написал простую программу, которая читает консоль wchar_t из позиции x, y.

Это было примерно так:

//Example of reading wchar_t from x, y
#include <windows.h>
#include <io.h>
#include <fcntl.h>

int main()
{
    wchar_t readed;
    DWORD numRead; //I don't know why but without it, program fails
    _setmode(_fileno(stdout), _O_U16TEXT); //Setting mode to unicode

    //Example text; It has got an arrow on beginning to check Unicode works
    std::wcout << L"←The quick brown fox jumps over the lazy dog. 123456789";
    ReadConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), &readed, sizeof(wchar_t), {0, 0}, &numRead);
    std::wcout << readed;
    _setmode(_fileno(stdout), _O_TEXT); //Go back to 8-bit text
    return 0;
}

И вывод такой:

←The quick brown fox jumps over the lazy dog. 12345678
←

Так оно и работает! Но ... мне нужно получить индекс цвета в палитре консоли. Например, текст синий, поэтому вывод будет ← 1. Есть ли способ сделать это?
Из важных вещей я использую Visual Studio и, как вы можете догадаться, я использую windows.

...