德尔福控制台XE7透明屏

问题描述 投票:3回答:1

我如何能在一个delphi控制台应用程序(delphi xe6或更高)中清除控制台屏幕,我已经搜索了互联网和帮助文件,但似乎无法找到它?

delphi console screen
1个回答
9
投票

我想知道在delphi单元中是否已经提供了一个功能来提供这个功能。

Delphi运行时库中没有提供这样的函数。你需要使用操作系统服务来编写自己的函数。MSDN上的这篇文章解释了如何做到这一点。https:/support.microsoft.comen-uskb99261

这样翻译一下。

procedure ClearScreen;
var
  stdout: THandle;
  csbi: TConsoleScreenBufferInfo;
  ConsoleSize: DWORD;
  NumWritten: DWORD;
  Origin: TCoord;
begin
  stdout := GetStdHandle(STD_OUTPUT_HANDLE);
  Win32Check(stdout<>INVALID_HANDLE_VALUE);
  Win32Check(GetConsoleScreenBufferInfo(stdout, csbi));
  ConsoleSize := csbi.dwSize.X * csbi.dwSize.Y;
  Origin.X := 0;
  Origin.Y := 0;
  Win32Check(FillConsoleOutputCharacter(stdout, ' ', ConsoleSize, Origin, 
    NumWritten));
  Win32Check(FillConsoleOutputAttribute(stdout, csbi.wAttributes, ConsoleSize, Origin, 
    NumWritten));
  Win32Check(SetConsoleCursorPosition(stdout, Origin));
end;
© www.soinside.com 2019 - 2024. All rights reserved.