学习C/C++中的windows.h库

目前在学习面向对象的C++编程,想使用windows控制台实现一些小程序的界面(常见控制台就是显示你程序输出的小黑窗)

#include <windows.h>

下面是我涉及到的相关windows.h的学习的记录

1、句柄(Handle)

是整个Windows编程的基础。一个句柄是指使用一个唯一的整数值,即一个4字节(32位系统)或8字节(64位程序中)长的数值,来让windows标识应用程序中的 不同对象 和 同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。

通用句柄HANDLE有时候是逻辑指针,大多数时候是结构体指针,特殊句柄如HMENU等是结构体指针,Windows内存管理器管理的其实都是句柄,通过句柄来管理指针

下面三句不是很懂:(关于windows编程)

1.通用句柄HANDLE和特殊句柄一般情况下是可以相互转换的,但是有时候会出错

2.如果不考虑跨平台移植的话,应该多采用Windows SDK提供的内存管理函数,这样可以获得更好的内存管理

3.C语言的内存分配函数的实现都是依靠使用GMEM_FIXED调用Windows SDK的内存分配函数的

2、屏幕缓冲区

控制台有一个输入缓冲 和 至少一个屏幕缓冲(输出缓冲)构成

输出缓冲可以认为是一个字符信息的二维数组,每个元素包括实际在控制台显示的字符和颜色。

系统在创建控制台时会自动创建一个屏幕缓冲。可以通过CreateConsoleScreenBuffer函数为控制台创建新的屏幕缓冲。可以通过SetConsoleActiveScreenBuffer 函数将屏幕缓冲设置为活动屏幕缓冲,达到显示的目的。不管是什么类型的屏幕缓冲(活动或者非活动)都可以直接读写。

 

在Windows官网上面有控制台的API函数的介绍,只不过是英文的   点这里直达

下面是我看这个网站 注释的一个别人写的 控制台小游戏2048 的控制台操作部分

/*
该程序用来在屏幕上显示matrix[row][column]数组的,四乘四
*/

	//创建屏幕缓冲区
	HANDLE hNewConsole = CreateConsoleScreenBuffer(GENERIC_WRITE | GENERIC_READ, //控制台屏幕缓冲区的权限 读或者写
		0, //0表示缓冲区不能共享。或者任意下列值:FILE_SHARE_READ共享读 FILE_SHARE_WRITE共享写
		NULL,//指向SECURITY_ATTRIBUTES结构体的指针 决定返回的句柄 是否可被继承 NULL代表处理不能被继承
		CONSOLE_TEXTMODE_BUFFER,//创建该控制台屏幕缓冲区的类型,可选类型只有 CONSOLE_TEXTMODE_BUFFER.
		NULL);  //约定值 就应当是NULL

	//定义一个_COORD类型(COORD)结构体cdBufferSize 存储屏幕尺寸信息
	COORD cdBufferSize = { 320,480 };// {80, 25}  COORD是CONSOLE_CURSOR_INFO 结构体的别名
	//设置窗口缓冲区大小
	SetConsoleScreenBufferSize(hNewConsole,  //有GENERIC_READ属性的 屏幕缓冲区句柄
							   cdBufferSize); //提供具体信息的 COORD 结构体 		

	//定义 _CONSOLE_CURSOR_INFO类型的结构体cci					   
	CONSOLE_CURSOR_INFO cci = { 0,0 };
	//隐藏光标
	SetConsoleCursorInfo(hNewConsole, &cci); //形参为 控制台句柄 和 _CONSOLE_CURSOR_INFO *型
 
	//设置标题栏
	SetConsoleTitle("2048小游戏");
 
	//提示信息
	if (gameWin)
		cout << "You win!" << endl;
	else if (gameOver)
		cout << "You lose!" << endl;
	else
		cout << "Fighting!" << endl;
	//打印格子
	for (int row = 0; row < ROW; row++)
	{
		for (int column = 0; column < COLUMN; column++)
		{
			COORD cdCursorPos = { column,row };
			//cout << matrix[row][column] << '\t';
			int *p = &matrix[row][column];
			SetConsoleCursorPosition(hNewConsole, cdCursorPos);
			WriteConsole(hNewConsole, //句柄
						 p, //一个指针 指向 包含要写元素的一个缓冲区 
						 sizeof(int),//要写元素的数量
						 NULL,//指向接收实际写入字符数的变量的指针。
						 NULL); //默认为NULL
		}
		cout << endl; cout << "row";
	}
	
	SetConsoleActiveScreenBuffer(hNewConsole);//将屏幕缓冲设置为活动屏幕缓冲 显示设计好的东西 参数只有一个— —控制台屏幕缓冲区的句柄
 
	//游戏结束,返回正常模式
	if (gameOver)
		SetConsoleActiveScreenBuffer(GetStdHandle(STD_OUTPUT_HANDLE));//输入以下标准器件参数之一:STD_INPUT_HANDLE(输入);STD_OUTPUT_HANDLE(输出);STD_ERROR_HANDLE(错误器件)	
 

 

 

要在Windows官网上下载语言包,可以按照以下步骤进行操作。 1. 打开浏览器,进入Windows官网(www.microsoft.com)。 2. 在官网的主页上,找到并点击“下载”或“产品”等相关选项。 3. 在下载页面上,找到“Windows语言包”或“语言包下载”等相关链接。点击该链接。 4. 进入语言包下载页面后,浏览页面上列出的可用语言包。根据自己的需求,选择适合的语言包进行下载。 5. 在语言包页面上可能会显示适用于不同版本的Windows的语言包。如果你的操作系统是Windows 10,则选择与你的操作系统版本相匹配的语言包。 6. 点击所选择的语言包下载链接。下载过程可能需要一些时间,具体时间取决于您的网络速度。 7. 下载完成后,找到下载的语言包文件。这通常是一个压缩文件(.zip或.cab格式)。解压文件以获取语言包文件。 8. 打开“控制面板”并进入“语言”设置。选择“添加语言”或“更改语言偏好设置”等选项。 9. 在语言设置页面上,点击“添加语言”,然后选择从步骤7解压得到的语言包文件。 10. 安装语言包,系统将自动进行语言包安装并在安装完成后提示重新启动计算机。 11. 重新启动计算机后,系统将使用新安装的语言包作为默认语言。 通过以上步骤,您可以在Windows官网上下载并安装语言包,以便在Windows操作系统使用您所需的语言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值