【问题标题】:Changing the console size更改控制台大小
【发布时间】:2010-10-18 10:08:27
【问题描述】:

Delphi 中的简单问题。我创建了一个控制台应用程序,如果控制台窗口的高度小于 80 行,我需要将其更改为 80 行。这需要从代码中完成,实际上在代码中是有条件的。 (即,当发生错误时,它会增加控制台的大小,因此整个(巨大的)错误报告都是可见的。)
请记住,这是一个控制台应用程序!当它启动时,它使用默认控制台,我需要更改它!

【问题讨论】:

    标签: delphi console-application delphi-2007


    【解决方案1】:

    调用 SetConsoleWindowInfo() 时,传递给控制台的 Left 和 Top 的值至少需要为 1,而不是 0。问题已解决。

    我现在这样做:

    uses
      Windows;
    
    var
      Rect: TSmallRect;
      Coord: TCoord;
    begin
      Rect.Left := 1;
      Rect.Top := 1;
      Rect.Right := 80;
      Rect.Bottom := 60;
      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;
    

    【讨论】:

    【解决方案2】:
    procedure SetConsoleWindow(NewWidth : integer;NewHeight : integer);
    
    var
      Rect: TSmallRect;
      Coord: TCoord;
      begin { SetConsoleWindow }
      Coord.X := NewWidth;
      Coord.y := NewHeight;
      SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), Coord);
      Rect.Left := 0;   //  must be zero
      Rect.Top := 0;
      Rect.Right := Coord.X - (Rect.Left + 1);
      Rect.Bottom := Coord.y - (Rect.Top + 1);
      SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), True, Rect);
      end; { SetConsoleWindow }
    

    【讨论】:

    • 晚了九年... :-)
    猜你喜欢
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 2015-01-23
    相关资源
    最近更新 更多