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

数据结构:Win32 API详解

目录

一.Win32 API的介绍

二.控制台程序(Console)与COORD

1..控制台程序(Console):

2.控制台窗口坐标COORD:

3.GetStdHandle函数:

(1)语法:

(2)参数:

4.GetConsoleCursorInfo函数:

(1)语法:

(2)参数:

(3)CONSOLE_CURSOR_INFO结构体:

5.SetConsoleCursorInfo函数:

实例:

6.SetConsoleCursorPosition函数:

(1)语法:

(2)参数:

​编辑(3)实例:

7.GetAsyncKeyState函数:

(1)语法:

(2)参数:

一.Win32 API的介绍


二.控制台程序(Console)与COORD

1..控制台程序(Console):

简单来说,我们平常在使用的VS里运行起来的黑框程序其实就是控制台程序

例如我们可以通过cmd命令控制控制台窗口的长度:比如设置控制台窗口的大小为30行 ,100列

这个窗口的打开和使用也很简单:打开搜索栏输入cmd并且以管理员身份运行就可以

同样,vs里也可以进行一样的操作:

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{//system函数,用来执行系统命令system("mode con cols=100 lines=30 ");//更改界面大小system("title 贪吃蛇");//修改调试界面的标题,但程序一旦结束,设置的名字也会随之恢复出厂设置//getchar();//为了使标题一直处于一个被修改的状态,故要使程序一直处于运行的状态system("pause");//使程序暂停,也可以实现使程序不终止的效果return 0;
}


2.控制台窗口坐标COORD:

同时,这里还有另外三点需要补充一下:

1.COORD也作为好些函数的返回值(类型)使用,

2.COORD需要引用一个叫做“windows.h”的头文件

3.关于控制台的数轴展示:


3.GetStdHandle函数:

GetStdHandle是⼀个Windows API函数,(返回值为HANDLE(一种指针)),它⽤于从⼀个特定的标准设备(标准输⼊(我们常说的键盘)、标准输出标 准错误(对应显示器的终端或控制台))中取得⼀个句柄(⽤来标识不同设备的数值),使⽤这个句柄可以操作设备

(这个句柄就相当于我们炒菜时用的锅的把手)

(1)语法:
HANDLE WINAPI GetStdHandle(_In_ DWORD nStdHandle);
(2)参数:


4.GetConsoleCursorInfo函数:

检索有关指定控制台屏幕缓冲区的光标大小和可⻅性的信息

(1)语法:
BOOL WINAPI GetConsoleCursorInfo(_In_  HANDLE,                 //hConsoleOutput,获取的就是上一个函数联系在一起的标准设备_Out_ PCONSOLE_CURSOR_INFO   //lpConsoleCursorInfo,是一个存储着光标信息的结构体
);
(2)参数:

(3)CONSOLE_CURSOR_INFO结构体:
typedef struct _CONSOLE_CURSOR_INFO {DWORD dwSize;BOOL  bVisible;
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;


5.SetConsoleCursorInfo函数:

设置指定控制台屏幕缓冲区的光标的⼤⼩和可⻅性

(其参数设置和GetConsoleCursorInfo函数一样)

只不过前者用来获取后者用来实操

实例:

在下面这个隐藏光标的操作里有一点需要注意的就是使用false时要引用“stdbool.h”的头文件

HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
//隐藏光标操作 
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(hOutput, &CursorInfo);//获取控制台光标信息 
CursorInfo.bVisible = false; //隐藏控制台光标 
SetConsoleCursorInfo(hOutput, &CursorInfo);//设置控制台光标状态 

6.SetConsoleCursorPosition函数:

设置指定控制台屏幕缓冲区中的光标位置,我们将想要设置的坐标信息放在COORD类型的pos中,调 ⽤SetConsoleCursorPosition函数将光标位置设置到指定的位置

(1)语法:
BOOL WINAPI SetConsoleCursorPosition(_In_ HANDLE hConsoleOutput,_In_ COORD  dwCursorPosition
);
(2)参数:
(3)实例:
COORD pos = { 10, 5};HANDLE hOutput = NULL;//获取标准输出的句柄(⽤来标识不同设备的数值) hOutput = GetStdHandle(STD_OUTPUT_HANDLE);//设置标准输出上光标的位置为pos SetConsoleCursorPosition(hOutput, pos);
////
//SetPos:封装⼀个设置光标位置的函数
//设置光标的坐标 
void SetPos(short x, short y)
{COORD pos = { x, y };HANDLE hOutput = NULL;//获取标准输出的句柄(⽤来标识不同设备的数值) hOutput = GetStdHandle(STD_OUTPUT_HANDLE);//设置标准输出上光标的位置为pos SetConsoleCursorPosition(hOutput, pos);
}

7.GetAsyncKeyState函数:

&:按位与,都1则1,否则为0

(1)语法:
SHORT GetAsyncKeyState([in] int vKey
);
(2)参数:

(这里仅仅展示了部分按键状态的代码)

Win32 API比较常见的函数和基础知识大概就这些,有了这些函数我们就可以自然而然流传的进行与系统的交互,连接上链表的知识,我们也可以试着写一写小项目:贪吃蛇,这个项目的具体实现我会在下面的文章里具体阐述

全文终

http://www.lryc.cn/news/503435.html

相关文章:

  • 迁移学习中模型训练加速(以mllm模型为例),提速15%以上
  • socket编程UDP-实现停等机制(接收确认、超时重传)
  • 前端面试题目 (Node.JS-Express框架)[二]
  • 防范TCP攻击:策略与实践
  • 3D 生成重建034-NerfDiff借助扩散模型直接生成nerf
  • 分布式 Paxos算法 总结
  • 我的宝贵经验
  • geoserver 瓦片地图,tomcat和nginx实现负载均衡
  • Jenkins 启动 程序 退出后 被杀死问题
  • SEGGER | 基于STM32F405 + Keil - RTT组件01 - 移植SEGGER RTT
  • 分布式开发学习
  • freeswitch(开启支持MCU视频会议,使用mod_av模块)
  • Vue3常见api使用指南(TS版)
  • 分布式 分布式事务 总结
  • onnx文件转pytorch pt模型文件
  • 智能座舱人机交互升级
  • RabbitMQ中点对点(Point-to-Point)通讯方式的Java实现
  • 爬虫实战:获取1688接口数据全攻略
  • 生成树协议STP工作步骤
  • Android14 AOSP支持短按关机
  • C# 和 go 关于can通信得 整理
  • vue常用命令汇总
  • 【C++习题】18.逆波兰表达式求值
  • 本地如何使用 yarn link 调试本地 npm 包
  • 江恩45年一书的自己一点读书见解
  • 影响 Linux、Unix 系统的 CUPS 漏洞可导致 RCE
  • 【汇编】思考汇编中的两个基本问题
  • Nest Dynamic modules 笔记
  • 生成式AI、大模型、多模态技术开发与应用学习清单
  • STM32 CubeMx HAL库 独立看门狗IWDG配置使用