我怎样才能提高控制台的大小里面的代码(How can I increase the size of

2019-10-29 07:53发布

我正在使用Lazarus IDE能v1.8.4帕斯卡一些代码,因为这个问题说,我需要能够在代码编辑控制台的大小,我最好也需要得到他们能有最大可能的控制台宽度。 如果你知道如何也请让我知道你..使用的用途。 谢谢!

Answer 1:

假设你正在针对Windows:

  • 使用GetLargestConsoleWindowSize取决于控制台字体和显示设置以获取最大可能的控制台大小,

  • 使用SetConsoleScreenBufferSize控制台屏幕缓冲区设置为尽可能大的尺寸,

  • 使用SetConsoleWindowInfo设置控制台窗口的大小和位置,所以没有滚动条会默认等..可见

在这一点上,你已经设置控制台窗口应定位。 随着我的测试,然而,当窗口与尺寸要求符合,位置被忽略。

在这种情况下使用任何API函数来移动窗口,以下的实施例使用SetWindowPos 。 我不得不宣布GetConsoleWindow因为它不是在拉撒路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.


而且不要忘了添加错误检查。



Answer 2:

这似乎在拉撒路上Win10Pro工作对我罚款。

program ResizeConsoleWin;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Windows;

procedure SetConsoleWindowSize;
var
  Rect: TSmallRect;
  Coord: TCoord;
begin
  Rect.Left := 1;
  Rect.Top := 1;
  Rect.Right := 300;  // notice horiz scroll bar once the following executes
  Rect.Bottom := 30;
  Coord.X := Rect.Right + 1 - Rect.Left;
  Coord.y := Rect.Bottom + 1 - Rect.Top;
  SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), Coord);
  SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), True, Rect);
end;

begin
  SetConsoleWindowSize;
  readln;
end.

它是从复制这个答案 ,只有变化的窗口尺寸。



文章来源: How can I increase the size of the console inside the code