c++怎么设置控制台窗口的起始大小

 我来答
好程序员
2016-12-05 · HTML5前端培训/大数据培训/Java
好程序员
好程序员是IT高端课程培训基地,从平凡到卓越,为梦想而拼搏。
向TA提问
展开全部

1.Windows的控制台如果是CMD的话,应该是可以设置的。但是如果用command或者已经运行了16位程序切换到虚拟DOS方式就不能设了。这个时候只有调用BIOS的INT 10h显示中断服务(这个当然是Windows虚拟的)来切换其它的显示模式。
VGA支持80x25、80x43、80x30、80x50几种。
VESA支持80x60、132x25、132x50、132x60之类的……
具体的方法要参考IBM PC的VGA编程手册或者VESA BIOS Extension(VBE)文档
2.因为这个DOS模式是严格模仿PC行为的,因为有很多BIOS服务之类的都是依赖这个VGA文本显示方式的。不像Linux那种终端,可以随便设计大小,因为它的终端设计和具体硬件是分离的

3.如下参考代码:

GetConsoleScreenBufferInfo 获取控制台窗口信息

GetConsoleTitle 获取控制台窗口标题

ScrollConsoleScreenBuffer 在缓冲区中移动数据块

SetConsoleScreenBufferSize 更改指定缓冲区大小

SetConsoleTitle 设置控制台窗口标题

SetConsoleWindowInfo 设置控制台窗口信息

 

  此外,还有窗口字体、显示模式等控制函数,这里不再细说。下列举一个示例,程序如下:

 

#include 

#include 

#include 

void main()

{

HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); 

// 获取标准输出设备句柄

CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口缓冲区信息

GetConsoleScreenBufferInfo(hOut, bInfo );

// 获取窗口缓冲区信息

char strTitle[255];

GetConsoleTitle(strTitle, 255); // 获取窗口标题

printf("当前窗口标题是:%s\n", strTitle);

_getch();

SetConsoleTitle("控制台窗口操作"); // 获取窗口标题

_getch();

COORD size = {80, 25};

SetConsoleScreenBufferSize(hOut,size); // 重新设置缓冲区大小

_getch();

SMALL_RECT rc = {0,0, 80-1, 25-1}; // 重置窗口位置和大小

SetConsoleWindowInfo(hOut,true ,&rc);

CloseHandle(hOut); // 关闭标准输出设备句柄

}

 

  需要说明的是,控制台窗口的原点坐标是(0, 0),而最大的坐标是缓冲区大小减1,例如当缓冲区大小为80*25时,其最大的坐标是(79, 24)。

   

   

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式