Нужно получить символ из консоли (уже выведенный) С++
Очень долго искал как это сделать, но и то что нашел не работает.
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';
}