Уменьшение размера консоли

У меня проблема с изменением размера консоли. Это мой код:

BOOL setConsole(int x, int y)
{
hStdin = GetStdHandle(STD_INPUT_HANDLE); 
hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
if (hStdin == INVALID_HANDLE_VALUE || 
    hStdout == INVALID_HANDLE_VALUE) 
{
    MessageBox(NULL, TEXT("GetStdHandle"),
        TEXT("Console Error"), MB_OK);
    return false;
}


SMALL_RECT windowSize = {0, 0, x-1, y-1};

// Change the console window size:
SetConsoleWindowInfo(hStdout, TRUE, &windowSize);

COORD c = { x, y};

//Change the internal buffer size:
SetConsoleScreenBufferSize(hStdout, c);


SetConsoleDisplayMode(hStdout,CONSOLE_FULLSCREEN_MODE, &c);

return true;
}

Это прекрасно работает, когда я пытаюсь увеличить консоль. Когда один параметр меньше предыдущего, ничего не происходит. Что случилось?

@edit: после некоторых тестов я заметил, что изменение размера (уменьшение) возможно, если я изменю один параметр за один раз. Пример (предположим, консоль 100x100)

 setConsole(90,90); //dosen't work.
 setConsole(90,100);
 setConsole(90,90); // works perfectly

ЗАЧЕМ?!

Ответы на вопрос(4)

Ваш ответ на вопрос