现在的位置: 首页 > 综合 > 正文

C语言控制台窗口图形界面编程(二):窗口缓冲区的设置

2018年04月21日 ⁄ 综合 ⁄ 共 1188字 ⁄ 字号 评论关闭

       下面介绍几个用于控制台窗口操作的API函数,如下:

//获取控制台窗口信息
GetConsoleScreenBufferInfo();

//获取控制台窗口标题
GetConsoleTitle();

//更改指定缓冲区大小
SetConsoleScreenBufferSize();

//设置控制台窗口标题
SetConsoleTitle();

//设置控制台窗口信息
SetConsoleWindowInfo();


       下面的示例程序用于说明此类函数的使用:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <conio.h>
#define N 255

int main()
{
	HANDLE handle_out;	//定义一个句柄
	CONSOLE_SCREEN_BUFFER_INFO scbi;	//定义一个窗口缓冲区信息结构体
	COORD size = {80, 25};		//定义一个坐标结构体
	char strtitle[N];
	handle_out = GetStdHandle(STD_OUTPUT_HANDLE);	//获得标准输出设备句柄
	GetConsoleScreenBufferInfo(handle_out, &scbi);	//获得窗口缓冲区信息
	GetConsoleTitle(strtitle, N);	//获得当前窗口标题
	printf("当前窗口标题为:%s\n", strtitle);
	_getch();
	SetConsoleTitle("控制台窗口操作");		//设置窗口标题为“控制台窗口操作”
	GetConsoleTitle(strtitle, N);			//获得当前窗口标题
	printf("当前窗口标题为:%s\n", strtitle);
	_getch();
	SetConsoleScreenBufferSize(handle_out, size);	// 重新设置缓冲区大小
	_getch();
	SMALL_RECT rc = {0, 0, 80-1, 25-1};		// 重置窗口位置和大小
	SetConsoleWindowInfo(handle_out, 1, &rc);
	CloseHandle(handle_out);	//关闭标准输出设备句柄
	return 0;
}

       其中,SetConsoleScreenBufferSize函数指定新的控制台屏幕缓冲区的大小,以字符列和行为单位。指定的宽度和高度不能小于控制台屏幕缓冲区窗口的宽度和高度。指定的大小也不能小于系统允许的最小大小。这个最低取决于控制台当前的字体大小
(由用户选定)。


       另外,GetConsoleTitle函数的具体实现取是否宏定义了UNICODE(与文件编码形式有关),所以在部分IDE中可能这段示例编译不通过,换一个别的编译器或IDE就行了。本样例在Code::Blocks
13.12编译通过。

抱歉!评论已关闭.