我们知道在控制台程序运行的时候,Alt+Enter可以将控制台窗口变成全屏模式,好像又回到了DOS时代的感觉哦!那么我们怎么在程序中来控制呢?
在Windows NT/2000中要使用两个未公开的Win32 API函数来控制控制台程序的窗口显示状态。这两个函数是:
BOOL SetConsoleDisplayMode (
HANDLE hOut, // 标准输出句柄
DWORD dwNewMode, // 指定显示模式
LPDWORD lpdwOldMode, // 用于前一个显示模式值的变量地址
);
BOOL GetConsoleDisplayMode (
LPDWORD lpdwMode, //用于当前显示模式值的变量地址
);
并且都在动态链接库'kernel32'中
下面是将控制台窗口最大化的演示代码:
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{$APPTYPE CONSOLE}
program FullScreen;
uses
Classes,
Windows;
type
TSetConsoleDisplayMode = function(hOut: THandle; dwNewMode: DWORD; lpdwOldMode: LPDWORD): BOOL; stdcall;
var
hOutput: THandle;
dwOldMode: DWORD;
hKernel32: HMODULE;
SetConsoleDisplayMode: TSetConsoleDisplayMode;
{$R *.RES}
begin
hOutput := GetStdHandle(STD_OUTPUT_HANDLE);
hKernel32 := GetModuleHandle('kernel32');
@SetConsoleDisplayMode := GetProcAddress(hKernel32,'SetConsoleDisplayMode');
SetConsoleDisplayMode(hOutput, 1, @dwOldMode);
SetConsoleTitle('Demo-控制台程序全屏');
Writeln('在Dephi下实现控制台程序的全屏显示!');
Writeln('用Alt+Enter切换全屏和窗口');
Readln;
end.