system调整控制台大小的问题

大一上学期结束,C语言老师发布了作业,我们组选择做一个图书管理系统

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qJ7I3a7w-1647434910334)(C:\Users\Asus\Desktop\课程设计\题干.PNG)]

程序几天编写好了,在优化代码过程中发现了一个关于控制台的问题

我们常用到system("mode con cols=数字1 lines=数字2")

数字1控制窗口的长,数字2控制窗口的宽

我在程序中写入system("mode con cols=60 lines=30");

system调整控制台大小的问题_第1张图片

改变了控制台窗口的大小

但是当我去尝试程序的功能时发现一个问题

system("mode con cols=60 lines=30");

system调整控制台大小的问题_第2张图片

程序中不含 system("mode con cols=60 lines=30");
system调整控制台大小的问题_第3张图片

我们可以清晰地看到前者没有滚动条,后者有。这样就导致一个问题,如果我们想美化控制台,则会出现一个问题,就是当我们大批量想查看数据时就无法拖动滚动条查看,这样的话,美化控制台这个行为直接拉了。

当然不能轻易放弃,我们组去查了查关于控制台发现

控制台分为控制台窗口大小和控制台缓冲区大小

控制台窗口掌管着CMD窗口大小,控制台缓冲区掌管着你能在CMD窗口中看到的数据(整个窗口中能拖动数据的面积),而system("mode con cols=数字1 lines=数字2") 这个玩意它默认设置控制台窗口和控制台缓冲区大小相同,所以我们要在这行代码后面重新定义控制台缓冲区。

如下:

头文件:#include

代码:HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleScreenBufferSize(hOut, {数字1,数字2});

第一行意思是定义一个句柄(资源标识符)取得控制台的窗口句柄

第二行意思是设置控制台缓冲区大小

数字1控制控制台缓冲区的宽,数字2控制缓冲区的高(数字越小滚动条越大,数字1,数字2就代表了缓冲区的面积)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mkrxXdc1-1647434910335)(C:\Users\Asus\Desktop\MarkDown\后端语言笔记\4.png)]

这样就解决了滚动条的问题

system调整控制台大小的问题_第4张图片

你可能感兴趣的:(杂题,c++)