C语言控制台设置

光标设置

利用SetConsoleCursorPosition函数可以达到设置光标位置的目的

函数原型
BOOL SetConsoleCursorPosition(HANDLE hOut,COORD pos);
参数
  • hOut
    目标窗口的句柄
  • pos
    pos 是一个 COOND 类型的结构体变量,结构体原型在文章末尾或有介绍。本参数的作用是传入一个坐标,就是你希望光标所在的坐标。
返回值

  成功返回1,失败返回0;

窗口大小设置

窗口大小的设置涉及到了SetConsoleWindowInfo和SetConsoleScreenBufferSize这两个函数

SetConsoleWindowInfo 函数的作用是设置控制台窗口的大小

函数原型
BOOL WINAPI SetConsoleWindowInfo(
    _In_       HANDLE     hOut,
    _In_       BOOL       bAbsolute,
    _In_ const SMALL_RECT *lpConsoleWindow
);
参数
  • hOut
    控制台屏幕缓冲区的句柄。
  • bAbsolute
    该参数一般为TRUE。
  • lpConsoleWindow
    指向 SMALL_RECT 结构体的指针,指定窗口在屏幕缓冲区的左上角和右下角位置。
返回值

  如果函数操作成功,返回值为非零值。否则返回值为零。

SetConsoleScreenBufferSize 函数的作用是设置控制台窗口缓冲区的大小

函数原型
BOOL WINAPI SetConsoleScreenBufferSize(
__in HANDLE hOut,
__in COORD pos
);
参数
  • hOut
    控制台屏幕缓冲区的句柄。该句柄必须具有的 GENERIC_READ 的访问权限。
  • pos
    一个COORD结构体变量,指定新的控制台屏幕缓冲区的大小,以 字符列和行为单位。指定的宽度和高度不能小于控制台屏幕缓冲区窗口的宽度和高度。
返回值

  如果函数操作成功,返回值为非零值。否则返回值为零。

注:如果设置的控制台窗口尺寸小于缓冲区尺寸,则会出现滚动条;如果刚刚好,就不会出现滚动条。另:如果 SetConsoleScreenBufferSize 函数在 SetConsoleWindowInfo 之前调用,则 SetConsoleScreenBufferSize 函数就会调用失败!

附结构体

typedef struct _COORD
{
    SHORT X;      //横坐标
    SHORT Y;      //纵坐标
}COORD;
typedef struct _SMALL_RECT
{
    SHORT       Left;  
    SHORT       Top;  //窗口左上角坐标
    SHORT       Right;
    SHORT     Bottom;//窗口右下角
}SMALL_RECT;

举个栗子

#include<windows.h>
#include<stdio.h>  
#include<stdlib.h>               
void Goto(short x, short y)     //设置光标位置
{
	COORD pos = {x, y};
	HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hOut, pos);

}
void SetSize(short x, short y)  // 设置同样的缓冲区和窗口大小,不会出现滚动条
{
	HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
   	COORD pos = {x, y};
   	SMALL_RECT rc = {0, 0, x-1, y-1};
   	SetConsoleWindowInfo(hOut, true, &rc);
   	SetConsoleScreenBufferSize(hOut, pos);
}
int main()
{
	SetSize(60, 30);
	Goto(18,14);
	printf("设置完毕!尺寸大小:60*30!\n");
	Goto(0,0);
	system("pause");
	return 0;
}
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值