大一上学期结束,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("mode con cols=60 lines=30");
程序中不含 system("mode con cols=60 lines=30");
我们可以清晰地看到前者没有滚动条,后者有。这样就导致一个问题,如果我们想美化控制台,则会出现一个问题,就是当我们大批量想查看数据时就无法拖动滚动条查看,这样的话,美化控制台这个行为直接拉了。
当然不能轻易放弃,我们组去查了查关于控制台发现
控制台分为控制台窗口大小和控制台缓冲区大小
控制台窗口掌管着CMD窗口大小,控制台缓冲区掌管着你能在CMD窗口中看到的数据(整个窗口中能拖动数据的面积),而system("mode con cols=数字1 lines=数字2")
这个玩意它默认设置控制台窗口和控制台缓冲区大小相同,所以我们要在这行代码后面重新定义控制台缓冲区。
如下:
头文件:#include<windos.h>
代码:HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleScreenBufferSize(hOut, {数字1,数字2});
第一行意思是定义一个句柄(资源标识符)取得控制台的窗口句柄
第二行意思是设置控制台缓冲区大小
数字1控制控制台缓冲区的宽,数字2控制缓冲区的高(数字越小滚动条越大,数字1,数字2就代表了缓冲区的面积)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mkrxXdc1-1647434910335)(C:\Users\Asus\Desktop\MarkDown\后端语言笔记\4.png)]
这样就解决了滚动条的问题