Win32API——对控制台的相关操作

一、Win32API

  Windows这个多作业系统除了协调应⽤程序的执⾏、分配内存、管理资源之外,它同时也是⼀个很⼤的服务中⼼,调⽤这个服务中⼼的各种服务(每⼀种服务就是⼀个函数),可以帮应⽤程序达到开启视窗、描绘图形、使⽤周边设备等⽬的,由于这些函数服务的对象是应⽤程序(Application),所以便称之为ApplicationProgrammingInterface,简称API函数。WIN32API也就是MicrosoftWindows32位平台的应⽤程序编程接⼝。

二、控制台程序

1、控制台窗⼝的⼤⼩

  平常我们运⾏起来的⿊框程序其实就是控制台程序我们可以使⽤cmd命令来设置控制台窗⼝的⻓宽:设置控制台窗⼝的⼤⼩,30⾏,100列。


 1.  mode con cols=100 lines=30

  控制台窗口大小我们需要用到mode命令
在这里插入图片描述
在这里插入图片描述
这样我们就可以在编程的过程中去在修改窗口大小。

2、控制台窗⼝的名字

  除了可以设置控制台窗口大的大小,还可以设置控制台窗口的名字

  控制台窗口大小我们需要用到title命令


 1. title 名字

在这里插入图片描述

3、system函数

  这些能在控制台窗⼝执⾏的命令,也可以调⽤C语⾔函数system来执⾏。

  system函数是一个执行系统命令的函数。调用命令处理器以执行命令。如果命令为空指针,则该函数仅检查命令处理器是否可通过该函数使用,而不调用任何命令。调用命令的效果取决于系统和库实现,并可能导致程序行为不规范或终止

在这里插入图片描述

三、控制台屏幕上的设置

1、COORD

  COORD是WindowsAPI中定义的⼀个结构体,表⽰⼀个字符在控制台屏幕幕缓冲区上的坐标,坐标系(0,0) 的原点位于缓冲区的顶部左侧单元格

在这里插入图片描述
COORD类型的声明:


 1.  typedef struct _COORD {
 2.  	SHORT X;
 3. 	SHORT Y;
 4.  } COORD, *PCOORD;

给坐标赋值:


 1.  COORD pos = { 10, 15 };

2、 GetStdHandle

  GetStdHandle是⼀个WindowsAPI函数。它⽤于从⼀个特定的标准设备(标准输⼊、标准输出或标准错误)中取得⼀个句柄(⽤来标识不同设备的数值),使⽤这个句柄可以操作设备。


 1. HANDLE GetStdHandle(DWORD nStdHandle);

  GetStdHandle的参数:标准设备
在这里插入图片描述
实例:


 1. HANDLE hOutput = NULL;
 2. hOutput = GetStdHandle(STD_OUTPUT_HANDLE);//标准输出设备
 3. hOutput = GetStdHandle(STD_INPUT_HANDLE);//标准输入设备
 4. hOutput = GetStdHandle(STD_ERROR_HANDLE);//标准错误设备

3、CONSOLE_CURSOR_INFO

  CONSOLE_CURSOR_INFO这个结构体,包含有关控制台光标的信息

1.	typedef struct _CONSOLE_CURSOR_INFO {
2.	 DWORD dwSize;
3.	 BOOL  bVisible;
4.	 } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;

  • dwSize,由光标填充的字符单元格的百分⽐。此值介于1到100之间。光标外观会变化,范围从完全填充单元格到单元底部的⽔平线条。

 1. CursorInfo.dwSize = 25

在这里插入图片描述

  • bVisible,游标的可⻅性。如果光标可⻅,则此成员为TRUE。

 1. CursorInfo.bVisible = false; //隐藏控制台光标
 

在这里插入图片描述

4、 GetConsoleCursorInfo

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


 1.  BOOL WINAPI GetConsoleCursorInfo(
 2.  HANDLE               
 3.	 hConsoleOutput,
 4.  PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
 5.  );

参数:

  • hConsoleOutput [in]
    控制台屏幕缓冲区的句柄。 该句柄必须具有 GENERIC_READ 访问权限。
  • lpConsoleCursorInfo [out]
    指向 CONSOLE_CURSOR_INFO 结构的指针,该结构接收有关控制台游标的信息。

GetConsoleCursorInfo可以将获取的句柄的光标信息放在 CONSOLE_CURSOR_INFO结构体中。
在这里插入图片描述

5、SetConsoleCursorInfo

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


 1. BOOL WINAPI SetConsoleCursorInfo(
 2. HANDLE  hConsoleOutput,
 3. const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo
 4. );

参数:

  • hConsoleOutput [in]
    控制台屏幕缓冲区的句柄。 该句柄必须具有 GENERIC_READ 访问权限。
  • lpConsoleCursorInfo [out]
    指向 CONSOLE_CURSOR_INFO 结构的指针,该结构接收有关控制台游标的信息。
    在这里插入图片描述

6、SetConsoleCursorPosition

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


 1.  BOOL WINAPI SetConsoleCursorPosition(
 2.  HANDLE hConsoleOutput,
 3.  COORD  pos
 4.  );

在这里插入图片描述

7、GetAsyncKeyState

获取按键情况,GetAsyncKeyState的函数原型如下:


 1.  SHORT GetAsyncKeyState(
 2.  int vKey
 3.  )

  将键盘上每个键的虚拟键值传递给函数,函数通过返回值来分辨按键的状态。
  GetAsyncKeyStat 的返回值是short类型,在上⼀次调用GetAsyncKeyState函数后,如果返回的16位的short数据中,最⾼位是1,说明按键的状态是按下,如果最⾼是0,说明按键的状态是抬起;如果最低位被置为1则说明,该按键被按过,否则为0。
  如果我们要判断⼀个键是否被按过,可以检测GetAsyncKeyState返回值的最低值是否为1


 1. #define KEY_PRESS(VK)  ( (GetAsyncKeyState(VK) & 0x1) ? 1 : 0 )

虚拟键码:https://learn.microsoft.com/zh-cn/windows/win32/inputdev/virtual-key-codes

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值