屏幕缓冲区的大小以基于字符单元格的坐标网格表示。宽度是每行中的字符单元格的数量,高度是行数。与每个屏幕缓冲区相关联的是一个窗口,用于确定控制台窗口中显示的屏幕缓冲区的矩形部分的大小和位置。屏幕缓冲区的窗口通过指定窗口矩形的左上角和右下单元格的字符单元格坐标来定义。
屏幕缓冲区可以是任何大小,仅由可用内存限制。屏幕缓冲区的窗口的尺寸不能超过屏幕缓冲区或可以根据当前字体大小(由用户专门控制)而适合屏幕的最大窗口的相应尺寸。
GetConsoleScreenBufferInfo函数返回有关屏幕缓冲区及其窗口的以下信息:
*屏幕缓冲区的当前大小
*窗口的当前位置
*给定当前屏幕缓冲区大小,当前字体大小和屏幕大小的窗口的最大大小
GetLargestConsoleWindowSize函数根据当前字体和屏幕大小返回控制台窗口的最大大小。该大小与GetConsoleScreenBufferInfo返回的最大窗口大小不同,因为屏幕缓冲区大小被忽略。
要更改屏幕缓冲区的大小,请使用SetConsoleScreenBufferSize功能。如果指定大小的任一维度小于控制台窗口的相应维度,则此函数将失败。
要更改屏幕缓冲区窗口的大小或位置,请使用SetConsoleWindowInfo功能。如果指定的窗口角坐标超过屏幕缓冲区或屏幕的限制,则此函数将失败。更改活动屏幕缓冲区的窗口大小会更改屏幕上显示的控制台窗口的大小。
一个进程可以改变其控制台的输入模式以启用窗口输入,以便当用户更改屏幕缓冲区大小时,进程能够接收输入。如果应用程序启用窗口输入,则可以使用GetConsoleScreenBufferInfo在启动时检索窗口和屏幕缓冲区大小。然后可以使用该信息来确定数据在窗口中的显示方式。如果用户更改屏幕缓冲区大小,应用程序可以通过更改显示数据的方式进行响应。例如,如果每行的字符数改变,应用程序可以调整文本的末尾方式。如果应用程序不启用窗口输入,则必须使用继承的窗口和屏幕缓冲区大小,或者在启动期间将其设置为所需的大小,并在退出时还原继承的大小。有关窗口输入模式的其他信息,请参阅低级控制台模式.