Нужно получить символ из консоли (уже выведенный) С++

Очень долго искал как это сделать, но и то что нашел не работает.

char get_char_at_xy(int x, int y)
{
    CHAR_INFO ci;
    COORD xy = { 0, 0 };
    SMALL_RECT rect = { x, y, x, y };
    return ReadConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE), &ci, 1, xy, rect)
        ? ci.Char.AsciiChar
        : '\0';
}

Жалуется что не может преобразовать Int в _COORD И SMALL_RECT в PSMALL_RECT

Может есть другие реализации?


Ответы (1 шт):

Автор решения: Павел Ериков

Создайте внутри функции переменную типа COORD и присвойте значение {1, 1}, а насчет PSMALL_RECT, то нужно передавать указатель на структуру, а не значение, так что перед rect нужно написать &.

Вот пример вашей функции с изменениями:

char get_char_at_xy(int x, int y)
{
    CHAR_INFO ci;
    COORD xy = { 0, 0 };
    //Размер буфера в виде строк и столбцов
    COORD buff_size{ 1, 1 };
    SMALL_RECT rect = { x, y, x, y };
    return ReadConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE), &ci, buff_size, xy, 
        /*Передаем указатель на структуру*/&rect)
        ? ci.Char.AsciiChar
        : '\0';
}
→ Ссылка