在使用GetConsoleScreenBufferInfo时有一些疑惑
先上代码:
#include <stdio.h>
#include <windows.h>
void TextAttribute();
int main()
{
printf("***");
TextAttribute();
return 0;
}
void TextAttribute ()
{
HANDLE hOut;
CONSOLE_SCREEN_BUFFER_INFO scr;
hOut = GetStdHandle(STD_OUTPUT_HANDLE); /* 获取标准输出句柄 */
GetConsoleScreenBufferInfo(hOut, &scr);
printf("当前光标:\n横坐标=%d 纵坐标=%d\n", scr.dwCursorPosition.X, scr.dwCursorPosition.Y);
printf("缓冲区最大:宽=%d,高=%d\n",scr.dwMaximumWindowSize.X, scr.dwMaximumWindowSize.Y);
printf("缓冲区 宽=%d 高=%d\n",scr.dwSize.X, scr.dwSize.Y);
printf("底部=%d 顶部=%d 左=%d 右=%d", scr.srWindow.Bottom, scr.srWindow.Top, scr.srWindow.Left, scr.srWindow.Right);
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE); /* 设置控制台颜色,前景色为蓝色*/
SetConsoleTextAttribute(hOut, BACKGROUND_RED); /* 背景色为红色 */
}
运行结果为:
变量scr是CONSOLE_SCREEN_BUFFER_INFO 类型的
一共有5个成员
COORD dwSize;\\dwSize缓冲区的宽度X和高度Y
COORD dwCursorPosition;\\当前光标在缓冲区中的坐标
WORD wAttributes;\\文本的属性(前景色、背景色等信息)
SMALL_RECT srWindow;\\当前窗口显示的大小和位置
COORD dwMaximumWindowSize;\\最大的窗口缓冲区大小
关于dwSize的值,我在控制台默认值里面找到了对应的参数
但是dwMaximumWindowSize表示的是最大的窗口缓冲区大小和dwSzie一样有两个成员X和Y
但是输出的值为120 50
疑问:
1、dwSize.X和dwSize.Y的值为什么会比dwMaximumWindowSize.X和dwMaximumWindowSize.Y的值大(感觉不应该会超过最大值)
2、对底部、顶部、左、右这四个参数值不是很懂(目前查到的是当前窗口显示的大小和位置)