当前位置: 首页 > news >正文

Win 32 API:初步了解与应用

◆博主名称:少司府

欢迎来到少司府的博客☆*: .。. o(≧▽≦)o .。.:*☆

数据结构系列个人专栏:

初阶数据结构_少司府的博客-CSDN博客

编程基础训练系列个人专栏:

编程基础50题_少司府的博客-CSDN博客

名不显时心不朽,再挑灯火看文章

目录

一、Win32 API 介绍

二、控制台程序

2.1 cmd命令

2.2 设置控制台相关属性

三、Win32 API

3.1 COOD类型 (坐标类型)

3.2 GetStdHandle

3.3 SetConsoleCursorPosition

3.4 GetConsoleScreenBufferInfo

3.5 SetConsoleTextAttribute

3.6 GetConsoleCursorInfo

3.7 GetAsyncKeyState


一、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和一个单位坐标y1: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表示未按过

本期的分享就到这里,如果觉得博主的文章比较对胃口的话,可以点一个小小的关注~

您的三连是我持续更新的动力~

http://www.jsqmd.com/news/497639/

相关文章:

  • 2026年SCI论文降AI率用什么工具?实测5款后选了这个
  • 4K型护套连接器ZE0703-09(250)参数
  • hello-agent task01打卡
  • PDF文件拆分, 不限制文件大小
  • 携程任我行礼品卡回收秒变现攻略 - 京顺回收
  • 任务栏标语图片
  • 加一 - 题目笔记
  • MySQL主键设计原则与自增ID的潜在问题分析
  • 自动化测试常用函数(元素的定位)
  • 技术分享-日志链路追踪
  • 龙虾智能体不是玩具!国家安全部提醒:这3个防护步骤必做
  • (独自升级Lv.1)C++基础面试题
  • 从零学网安第四期--在kali里面制作木马程序并实现远程控制
  • 238. 除了自身以外数组的乘积
  • 自动驾驶购物车测试:超市里的交通拥堵难题——软件测试工程师的实战解构
  • 《MySQL数据库基础》4. 数据类型
  • 别再花冤枉钱了!强推10款国内免费降AI神器,一键破解论文AIGC难题(附传送门)
  • 基于Vue.js的实验室耗材管理系统设计与实现 毕业设计源码+论文+PPT
  • 基础 语法
  • 机器人关节润滑脂如何选择?工程师必须了解的技术指标
  • 数组指针:高效操作多维数组
  • MATLAB与CST联合仿真:快速建模超表面阵列,涡旋波生成与雷达散射优化
  • 分享两道关于运算符号的题目
  • 全息医疗诊断测试:医生在空中操作器官模型的精度验证
  • 嘎嘎降AI升级双引擎技术,9大检测平台达标率超99%
  • Java面试八股文问答集——大厂必备含金量20题
  • 挖洞必看!40 个漏洞挖掘姿势吐血整理,小白也能快速挖到洞
  • ASP.NET公交车管理系统的实现与设计(源代码+论文)
  • 基于springboot的作业批改系统设计与实现 毕业设计源码+论文+PPT
  • TPC标准基准测试:如何评估并建立TDengine时序数据库的性能基线