system调整控制台大小的问题

在C语言的图书管理系统作业中,遇到控制台窗口大小调整导致的滚动条显示问题。通过研究发现,system("modeconcols=数字1lines=数字2")仅改变窗口大小,需额外使用SetConsoleScreenBufferSize来设置缓冲区大小,以保持窗口与缓冲区一致,消除滚动条影响。解决方案包括引入窗户句柄和设置缓冲区尺寸,确保在美化控制台的同时不影响数据查看。
摘要由CSDN通过智能技术生成

大一上学期结束,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)]

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

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值