0.0

本文介绍如何使用Windows API自定义控制台窗口,包括设置光标可见性、修改标题、调整窗口大小及位置、改变文本颜色等操作。

From  DD哥- -

setCursorVisible(0);//设置光标不可见

setWindowTitle(" XXXXX"); //改标题的文字

setWindowSize(20,15);//设置屏幕大小

#ifndef CONSOLE_H
#define CONSOLE_H

#include <windows.h>

//声明部分
void moveCursor (int, int);
void setCursorVisible (int);  //设置光标不可见
int getMaxSize ();
void setWindowTitle (char*);
void setWindowSize (int, int);//设置屏幕大小
void setColor (int, int);


//将输出符号定位到第[p_y]行第[p_x]个字符上。
void moveCursor (int p_x, int p_y) {
	int t_max = getMaxSize ();
	p_x = p_x < 1 ? 1 : (p_x >= t_max ? t_max - 1: p_x);
	p_y = p_y < 1 ? 1 : p_y;
	COORD t_pos;
	t_pos.X = p_x - 1;
	t_pos.Y = p_y - 1;
	HANDLE t_handle = GetStdHandle (STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition (t_handle, t_pos);
}

//设置光标是否可见,0为不可见,其它数字为可见
void setCursorVisible (int p_visitble) {
	HANDLE t_handle = GetStdHandle (STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO t_info;
	GetConsoleCursorInfo (t_handle, &t_info);
	t_info.bVisible = p_visitble == FALSE ? FALSE : TRUE;
	SetConsoleCursorInfo (t_handle, &t_info);
}

//返回一行最大可以容纳的字符数
int getMaxSize () {
	HANDLE t_handle = GetStdHandle (STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFO t_info;
    GetConsoleScreenBufferInfo (t_handle, &t_info);

	return t_info.dwSize.X;
}

//设置窗口标题,可以如下调用: setWindowTitle ("窗口标题");
void setWindowTitle (char* p_title) {
	SetConsoleTitle (p_title);
}

//设置窗口大小为[p_width] * [p_height]字符,注意:窗口过大或过小均会失败,请自行尝试
void setWindowSize (int p_width, int p_height) {
	HANDLE t_handle = GetStdHandle (STD_OUTPUT_HANDLE);
	SMALL_RECT t_size = {0, 0, p_width < 1 ? 1 : p_width, p_height < 1 ? 1 : p_height};
	SetConsoleWindowInfo (t_handle, true , &t_size);
}

//更改接下来输出的文字颜色
//[p_font]文字颜色 取值为0-15 默认为7
//[p_back]背景颜色 取值为0-15 默认为0
void setColor (int p_font, int p_back) {
	HANDLE t_handle = GetStdHandle (STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute (t_handle, p_font + (p_back << 4));
}

#endif


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值