void mp_hal_erase_line_from_cursor(uint n_chars_to_erase) { assure_conout_handle(); CONSOLE_SCREEN_BUFFER_INFO info; GetConsoleScreenBufferInfo(con_out, &info); DWORD written; FillConsoleOutputCharacter(con_out, ' ', n_chars_to_erase, info.dwCursorPosition, &written); FillConsoleOutputAttribute(con_out, info.wAttributes, n_chars_to_erase, info.dwCursorPosition, &written); }
void mp_hal_erase_line_from_cursor() { assure_conout_handle(); CONSOLE_SCREEN_BUFFER_INFO info; GetConsoleScreenBufferInfo(con_out, &info); const short len = info.dwSize.X - info.dwCursorPosition.X; DWORD written; FillConsoleOutputCharacter(con_out, ' ', len, info.dwCursorPosition, &written); FillConsoleOutputAttribute(con_out, info.wAttributes, len, info.dwCursorPosition, &written); }
void mp_hal_move_cursor_back(uint pos) { assure_conout_handle(); CONSOLE_SCREEN_BUFFER_INFO info; GetConsoleScreenBufferInfo(con_out, &info); info.dwCursorPosition.X -= (short)pos; if (info.dwCursorPosition.X < 0) { info.dwCursorPosition.X = 0; } SetConsoleCursorPosition(con_out, info.dwCursorPosition); }