Предполагается, что вы ориентируетесь на Windows:
Используйте GetLargestConsoleWindowSize
, чтобы получить максимально возможный размер консоли в зависимости от шрифта консоли и настроек дисплея,
Используйте SetConsoleScreenBufferSize
, чтобы установить максимальный размер буфера экрана консоли
Использовать SetConsoleWindowInfo
для установки размера и положения окна консоли, чтобы полосы прокрутки не были видны по умолчанию и т. Д.
На этом этапе окно консоли должно располагаться так, как выустановил.Однако в моих тестах, хотя окно соответствует запросу на определение размера, позиция игнорируется.
В этом случае используйте любую функцию API для перемещения окна, в приведенных ниже примерах используется SetWindowPos
.Мне пришлось объявить GetConsoleWindow
, как это не было объявлено в Lazarus 1.6.
program Project1;
{$APPTYPE CONSOLE}
uses
windows;
function GetConsoleWindow: HWND; stdcall external 'kernel32';
var
Con: THandle;
Size: TCoord;
Rect: TSmallRect;
Wnd: HWND;
begin
Con := GetStdHandle(STD_OUTPUT_HANDLE);
Size := GetLargestConsoleWindowSize(Con);
SetConsoleScreenBufferSize(Con, Size);
Rect.Left := -10;
Rect.Top := -10;
Rect.Right := Size.X - 11;
Rect.Bottom := Size.Y - 11;
SetConsoleWindowInfo(Con, True, Rect);
Wnd := GetConsoleWindow;
SetWindowPos(Wnd, 0, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOZORDER);
Readln;
end.
И не забудьте добавить проверку ошибок.