首页 新闻 搜索 专区 学院

控制台API函数----关于GetConsoleScreenBufferInfo

0
悬赏园豆:10 [已关闭问题] 关闭于 2019-03-13 21:54

在使用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、对底部、顶部、左、右这四个参数值不是很懂(目前查到的是当前窗口显示的大小和位置)

蓝海人的主页 蓝海人 | 初学一级 | 园豆:52
提问于:2019-03-12 23:09
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册