Win 32 API:初步了解与应用

◆博主名称:少司府
欢迎来到少司府的博客☆*: .。. o(≧▽≦)o .。.:*☆
⭐数据结构系列个人专栏:
⭐编程基础训练系列个人专栏:
⭐名不显时心不朽,再挑灯火看文章
目录
3.4 GetConsoleScreenBufferInfo
一、Win32 API 介绍
Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源外,它同时也是一个很大的服务中心。
调用这个服务中心的各种服务(每一种服务就是一种函数),可以帮助应用程序达到开启视窗、描绘图形、使用周边设备等目的。由于这些函数的服务对象是应用程序(Application),所以便称为Application Programming Interface,简称API函数。
Win32 API也就是Mircrosoft Windows 32位平台的应用程序编程接口。
二、控制台程序
2.1 cmd命令
我们可以通过以下命令来调整控制台窗口大小:mode con cols=100 lines=30
该命令的意思是调整控制台行为30,列为100。

如图,也可以在title 后面加一串字符,就可以修改控制台的标题。
2.2 设置控制台相关属性
想要在程序中操作控制台,我们可以使用system这个函数。如图:

其中,pause的意思是使该程序暂停,这样能防止主函数返回而关闭程序。
三、Win32 API
3.1 COOD类型 (坐标类型)
如图,这是COORD类型的具体定义。
typedef struct _COORD{
SHORT X;
SHORT Y;
}COORD,*PCOORD;
要使用这个类型,需要包含头文件<Windows.h>。
其主要定义的是在控制台界面的坐标x、y。

说到坐标,这就不得不提到控制台界面的坐标取值了。
在windows控制台界面中,一个单位坐标x和一个单位坐标y是1:2的关系。
并且,一个窄字符占一个单位面积,一个宽字符占两个单位面积。
3.2 GetStdHandle
GetStdHandle是一个Win32 API函数,它用于从一个特定的标准设备(标准输入、标准输出、标准错误)中取得一个句柄(用于标识不同设备的数值),使用句柄可以操作设备。
其中,标准输入指的是键盘输入,标准输出和标准错误指的是屏幕缓冲区。
//获取标准输出设备的句柄
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
3.3 SetConsoleCursorPosition
SetConsoleCursorPosition函数用于设置光标位置。其中,Console的意思是控制台,Cursor的意思是光标。
//设置坐标位置
void SetPos(int x, int y)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
3.4 GetConsoleScreenBufferInfo
GetConsoleScreenBufferInfo函数用于获取屏幕缓冲区信息。该函数需要两个参数,一个是设备的句柄,一个是CONSOLE_SCREEN_BUFFER_INFO类型的结构体指针。
//获取坐标位置
COORD GetPos()
{
CONSOLE_SCREEN_BUFFER_INFO buf;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &buf);
COORD pos = buf.dwCursorPosition;
return pos;
}
3.5 SetConsoleTextAttribute
SetConsoleTextAttribute函数用于设置控制台文本颜色信息。
//设置字体颜色
void SetPrintColor(int color)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}
如图,它也有两个参数,一个是句柄,一个是color控制颜色。其中,color是整数,代表不同颜色。
3.6 GetConsoleCursorInfo
GetConsoleCursorInfo函数用于获取控制台光标信息。它需要两个参数,一个是句柄,另一个是CONSOLE_CURSOR_INFO类型的结构体指针。
该类型包含两个结构体成员。一个dwSize,表示光标填充字符单元格的百分比,在1到100之间;另一个是bVisible,表示光标的可见性(默认是TRUE)。
//隐藏光标,使其不再闪烁
void HideCursor()
{
CONSOLE_CURSOR_INFO cursole_info;
GetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursole_info);
cursole_info.bVisible = false;
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursole_info);
}
3.7 GetAsyncKeyState
SHORT GetAsyncKeyState(int vk);
该函数是将键盘上每个键的虚拟值vk传递给函数,函数通过返回值来判断按键的状态。
该函数的返回类型是short 类型,在上一次调用函数后,若返回的16位short类型数据中,最高位是1,说明该键是按下状态,是0,说明是抬起状态。若最低位被置为1,说明被按过,否则为0。
#define KEY_PRESS(vk) ((GetAsyncKeyState(vk)&1)?1:0)//结果是1表示按过,结果是0表示未按过
本期的分享就到这里,如果觉得博主的文章比较对胃口的话,可以点一个小小的关注~
您的三连是我持续更新的动力~
更多推荐



所有评论(0)