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

全文终

相关文章:

数据结构:Win32 API详解

目录 一.Win32 API的介绍 二.控制台程序(Console)与COORD 1..控制台程序(Console): 2.控制台窗口坐标COORD&#xff1a; 3.GetStdHandle函数&#xff1a; &#xff08;1&#xff09;语法&#xff1a; &#xff08;2&#xff09;参数&#xff1a; 4.GetConsoleCursorInf…...

迁移学习中模型训练加速(以mllm模型为例),提速15%以上

根据模型训练过程的显存占用实测的分析,一个1g参数的模型(存储占用4g)训练大约需要20g的显存,其中梯度值占用的显存约一半。博主本意是想实现在迁移学习(冻结部分参数)中模型显存占用的降低,结果不太满意,只能实现训练速度提升,但无法实现显存占用优化。预计是在现有的…...

socket编程UDP-实现停等机制(接收确认、超时重传)

在下面博客中&#xff0c;我介绍了利用UDP模拟TCP连接、按数据包发送文件的过程&#xff0c;并附上完整源码。 socket编程UDP-文件传输&模拟TCP建立连接脱离连接&#xff08;进阶篇&#xff09;_udp socket发送-CSDN博客 下面博客实现的是滑动窗口机制&#xff1a; sock…...

前端面试题目 (Node.JS-Express框架)[二]

在 Express 中如何使用 Passport.js 进行身份认证? Passport.js 是一个 Node.js 的身份验证中间件&#xff0c;它可以很容易地与 Express 集成。下面是一个简单的示例&#xff0c;展示了如何使用 Passport.js 进行基本的身份认证。 安装依赖 npm install express passport …...

防范TCP攻击:策略与实践

TCP&#xff08;传输控制协议&#xff09;是互联网通信的核心协议之一&#xff0c;它确保了数据在网络上的可靠传输。然而&#xff0c;TCP也容易成为各种网络攻击的目标&#xff0c;如SYN洪水攻击、TCP连接耗尽攻击等。本文将探讨如何通过配置防火墙规则、优化服务器设置以及采…...

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 感觉这个论文可能能shapE差不多同时期工作&#xff0c;但是shapE是生成任意种类。 本文提出了一种新颖的单图像视图合成方法NerfDiff&#xff0c;该方法利用神经辐射场 …...

分布式 Paxos算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & Paxos算法 & 总结》《分布式 & Paxos算法 & 问题》 参考文献 《图解超难理解的 Paxos 算法&#xff08;含伪代码&#xff09;》《【超详细】分布式一致性协议 - Paxos》 Basic-Paxos 基础帕克索斯算法…...

我的宝贵经验

在技术的浩瀚海洋中&#xff0c;一份优秀的技术文档宛如精准的航海图。它是知识传承的载体&#xff0c;是团队协作的桥梁&#xff0c;更是产品成功的幕后英雄。然而&#xff0c;打造这样一份出色的技术文档并非易事。你是否在为如何清晰阐释复杂技术而苦恼&#xff1f;是否纠结…...

geoserver 瓦片地图,tomcat和nginx实现负载均衡

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;GeoServer作为一个强大的开源服务器&#xff0c;能够发布各种地图服务&#xff0c;包括瓦片地图服务。为了提高服务的可用性和扩展性&#xff0c;结合Tomcat和Nginx实现负载均衡成为了一个有效的解决方案。本文将详细…...

Jenkins 启动 程序 退出后 被杀死问题

参考 Spawning Processes From Build (jenkins.io) 解决jenkins脚本启动项目后进程被杀死_jenkins杀进程-CSDN博客...

SEGGER | 基于STM32F405 + Keil - RTT组件01 - 移植SEGGER RTT

导言 RTT(Real Time Transfer)是一种用于嵌入式中与用户进行交互的技术&#xff0c;它结合了SWO和半主机的优点&#xff0c;具有极高的性能。 使用RTT可以从MCU非常快速输出调试信息和数据&#xff0c;且不影响MCU实时性。这个功能可以用于很多支持J-Link的设备和MCU&#xff0…...

分布式开发学习

1、kratos的特点 gRPC&#xff1a;Kratos 默认支持 gRPC&#xff0c;提供高性能的远程调用能力&#xff0c;适用于微服务间通信。 HTTP &#xff1a;同时支持 HTTP/1.1 和 HTTP/2&#xff0c;方便微服务与外部系统交互。 Protocol Buffers&#xff1a; protoc 工具生…...

freeswitch(开启支持MCU视频会议,使用mod_av模块)

亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景说明: 有些场景想使用视频会议MCU融合画面进行开会使用方法: 第一步:下载插件 yum install -y epel-release yum install...

Vue3常见api使用指南(TS版)

defineProps() 和 defineEmits() 内置函数&#xff0c;无需import导入&#xff0c;直接使用。传入到 defineProps 和 defineEmits 的选项会从 setup 中提升到模块的范围。因此&#xff0c;传入的选项不能引用在 setup 范围中声明的局部变量(比如设置默认值时)&#xff0c;但是…...

分布式 分布式事务 总结

前言 相关系列 《分布式 & 目录》《分布式 & 分布式事务 & 总结》《分布式 & 分布式事务 & 问题》 分布式事务 所谓分布式事务是指操作范围笼罩多个不同节点的事务。例如对于订单节点&库存节点而言&#xff0c;一次完整的交易需要同时调动两个节…...

onnx文件转pytorch pt模型文件

onnx文件转pytorch pt模型文件 1.onnx2torch转换及测试2.存在问题参考文献 从pytorch格式转onnx格式&#xff0c;官方有成熟的API&#xff1b;那么假如只有onnx格式的模型文件&#xff0c;该怎样转回pytorch格式&#xff1f; https://github.com/ENOT-AutoDL/onnx2torch提供了…...

智能座舱人机交互升级

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所谓鸡汤&#xff0c;要么蛊惑你认命&#xff0c;要么怂恿你拼命&#xff0c;但都是回避问题的根源&…...

RabbitMQ中点对点(Point-to-Point)通讯方式的Java实现

RabbitMQ是一个广泛使用的开源消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。RabbitMQ支持多种消息传递模式&#xff0c;其中最基本的是点对点&#xff08;Point-to-Point&#xff09;通讯方式。在这种模式下&#xff0c;消息生产者将消息发…...

爬虫实战:获取1688接口数据全攻略

引言 在电商领域&#xff0c;数据的重要性不言而喻。1688作为中国领先的B2B电商平台&#xff0c;提供了海量的商品数据。通过爬虫技术获取这些数据&#xff0c;可以帮助企业进行市场分析、价格监控和供应链管理。本文将详细介绍如何使用Python爬虫技术合法合规地获取1688接口数…...

生成树协议STP工作步骤

第一步&#xff1a;选择根桥 优先级比较&#xff1a;首先比较优先级&#xff0c;优先级值越小的是根桥MAC地址比较&#xff1a;如果优先级相同&#xff0c;则比较MAC地址。MAC地址小的是根桥。 MAC地址比较的时候从左往右&#xff0c;一位一位去比 第二步&#xff1a;所有非根…...

贴吧Lite:如何用轻量级客户端获得极致贴吧体验

贴吧Lite&#xff1a;如何用轻量级客户端获得极致贴吧体验 【免费下载链接】TiebaLite 贴吧 Lite 项目地址: https://gitcode.com/gh_mirrors/tieb/TiebaLite 还在为官方贴吧应用的臃肿设计和无处不在的广告烦恼吗&#xff1f;贴吧Lite作为一款革命性的第三方贴吧客户端…...

Office RibbonX Editor:免费开源的Office界面定制终极指南

Office RibbonX Editor&#xff1a;免费开源的Office界面定制终极指南 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbonx-ed…...

3步搞定老iPhone降级:LeetDown让你的iPhone 5s/6焕发新生

3步搞定老iPhone降级&#xff1a;LeetDown让你的iPhone 5s/6焕发新生 【免费下载链接】LeetDown a macOS app that downgrades A6 and A7 iDevices to OTA signed firmwares 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 还在为iPhone 5s或iPhone 6升级后卡顿…...

YooAsset实战指南:Unity热更新架构重构与AB包管理

1. 为什么热更新不是“加个插件就能跑”&#xff0c;而是Unity项目上线前必须重做的一次架构手术 在Unity游戏开发里&#xff0c;"热更新"这三个字&#xff0c;听上去像是一键开启的魔法开关——版本发出去了&#xff0c;发现UI错位、数值写反、新活动脚本没加载&…...

渗透测试授权书:法律效力与技术执行的耦合设计

1. 这份授权书不是“走个形式”&#xff0c;而是渗透测试合法性的生死线很多人第一次接触渗透测试&#xff0c;看到《渗透测试授权书》模板&#xff0c;第一反应是&#xff1a;“不就是签个字的事&#xff1f;网上随便找个PDF填上名字就行。”我2015年刚入行时也这么想&#xf…...

抖音批量下载终极指南:5分钟学会无水印视频下载与智能归档

抖音批量下载终极指南&#xff1a;5分钟学会无水印视频下载与智能归档 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

Tiger框架深度剖析:从依赖注入到组件管理的完整指南

Tiger框架深度剖析&#xff1a;从依赖注入到组件管理的完整指南 【免费下载链接】tiger 项目地址: https://gitcode.com/gh_mirrors/ti/tiger Tiger框架是一个基于Java的依赖注入框架&#xff0c;专为Android和Java应用设计&#xff0c;提供了一套完整的组件管理解决方…...

XUnity Auto Translator:Unity游戏自动翻译的终极完整指南

XUnity Auto Translator&#xff1a;Unity游戏自动翻译的终极完整指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity Auto Translator是一款功能强大的开源游戏翻译工具&#xff0c;专为Unity引擎…...

英特尔现代代码开发挑战:实战性能优化与工具链应用指南

1. 项目概述&#xff1a;一场面向开发者的实战演练最近深度参与并复盘了英特尔举办的“现代代码开发挑战”网络研讨会&#xff0c;感触颇深。这远不止是一场普通的技术分享会&#xff0c;而是一个精心设计的、让开发者亲手“触摸”现代硬件性能潜力的实战沙盒。如果你是一名C/C…...

2026 SSH工具推荐:不装传统面板,还有什么更适合管理 Linux 服务器?

这几年很多人选 SSH 工具&#xff0c;已经不只是为了“远程登上服务器敲命令”。 真正常见的需求其实是&#xff1a;连上服务器之后&#xff0c;还要继续完成文件管理、服务部署、HTTPS 配置、站点检查&#xff0c;甚至多台 VPS 的统一管理。 也正因为这样&#xff0c;到了 202…...