Как предотвратить сообщение WINDOW_BUFFER_SIZE_EVENT во входном буфере консоли? - PullRequest
0 голосов
/ 17 апреля 2020

В следующем примере кода, почему записи WINDOW_BUFFER_SIZE_EVENT передаются во входной буфер консоли? Для воспроизведения измените размер окна консоли, перетаскивая его левый или правый край, и вы увидите события, напечатанные на консоли.

Согласно документации, флаг ENABLE_WINDOW_INPUT должен быть передан в SetConsoleMode для включить отчет WINDOW_BUFFER_SIZE_EVENT. В приведенном ниже примере отключены все флаги.

В любом случае, я знаю, что могу просто игнорировать события и ничего с ними не делать, но меня беспокоит, когда в документации Windows API написано, что ожидается одно поведение, но я наблюдаю другое поведение. Я что-то пропустил? Или это, возможно, ошибка в Windows или просто неправильная документация?

Я работаю Windows 10 Pro (версия 1903, сборка ОС 18362.720).

Соответствует Ссылки

SetConsoleMode

ReadConsoleInput

INPUT_RECORD

Чтение событий входного буфера

Пример кода

#include <Windows.h>
#include <stdio.h>

int main()
{
    HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE);
    // turn off all flags
    SetConsoleMode(hInput, 0);
    INPUT_RECORD inputRecord;
    DWORD eventsRead;
    while (ReadConsoleInput(hInput, &inputRecord, 1, &eventsRead)) {
        printf("EventType: %x\n", inputRecord.EventType);
    }   
}

РЕДАКТИРОВАНИЕ

Ссылка на эту же проблему в потоке Microsoft Terminal GitHub в 2018 году: https://github.com/microsoft/terminal/issues/281#issuecomment -440463031

"Идентификатор задачи: 19686633 - Убедитесь, что события для размера окна буфера и размера окна просмотра соответствуют ENABLE_WINDOW_INPUT flag"

...