快速入门基础控制台API

本文详细介绍了Win32API中的控制台基础函数,如修改标题、调整光标、获取和设置光标位置以及检测键盘按键。并通过实例展示了如何在控制台上实现光标操作和基于控制台的简单游戏如贪吃蛇。
摘要由CSDN通过智能技术生成

目录

一、什么是win32API

二、API基础函数介绍

2.1控制台基础命令

2.1.1标题修改

2.1.2长宽修改

2.1.3坐标

2.2GetStdHandle

2.3GetConsoleCursorInfo

2.4SetConsoleCursorInfo

2.5SetConsoleCursorPosition

2.6GetAsyncKeyState

三、API函数综合应用

3.1设置光标

3.2判断一个键是否被按下

3.2基于控制台的游戏-贪吃蛇


详见Microsoft官方解释:控制台函数 - Windows Console | Microsoft Learn

一、什么是win32API

        Win32 API是一组用于开发Microsoft Windows操作系统上应用程序的应用程序接口(API)。这些API是基于32位版本的Windows操作系统(如Windows 95、Windows 98、Windows NT等)的,因此得名Win32。它提供了对操作系统的底层功能的访问,包括窗口管理、图形设备接口、输入输出、文件系统等。通过Win32 API,开发人员可以编写能够与操作系统交互并利用其功能的应用程序,从简单的窗口应用程序到复杂的系统工具和游戏等各种类型的应用都可以使用Win32 API来开发。

二、API基础函数介绍

2.1控制台基础命令

2.1.1标题修改

title 自定义标题

2.1.2长宽修改

mode con cols=100 lines=30

2.1.3坐标

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

typedef struct _COORD {
    SHORT X;
    SHORT Y;
} COORD, *PCOORD;

2.2GetStdHandle

HANDLE GetStdHandle(DWORD nStdHandle);
  1. 作用:GetStdHandle是⼀个Windows API函数。它⽤于从⼀个特定的标准设备(标准输⼊、标准输出或标准错误)中取得⼀个句柄(⽤来标识不同设备的数值),使⽤这个句柄可以操作设备。
  2. 参数:

2.3GetConsoleCursorInfo

BOOL WINAPI GetConsoleCursorInfo(
    HANDLE hConsoleOutput,
    PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
);
  1. 作用:检索有关指定控制台屏幕缓冲区的光标大小和可⻅性的信息
  2. 参数:
    a.操作的句柄
    b.PCONSOLE_CURSOR_INFO 是指向 CONSOLE_CURSOR_INFO 结构的指针,该结构体接收有关主机光标的信息。
    typedef struct _CONSOLE_CURSOR_INFO {
      DWORD dwSize;
      BOOL  bVisible;
    } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
    
    • dwSize:由光标填充的字符单元格的百分⽐。 此值介于1到100之间。 
              光标外观会变化,范围从完全填充单元格到单元底部的⽔平线条。
    • bVisible:游标的可⻅性。 如果光标可⻅,则此成员为 TRUE。

2.4SetConsoleCursorInfo

BOOL WINAPI SetConsoleCursorInfo(
    HANDLE hConsoleOutput,
    const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo
);
  1. 作用:设置指定控制台屏幕缓冲区的光标的大小和可见性。
  2. 参数:同2.3解释

2.5SetConsoleCursorPosition

BOOL WINAPI SetConsoleCursorPosition(
    HANDLE hConsoleOutput,
    COORD pos
);
  1. 作用:
  2. 参数:
    a. 句柄
    b. 指向坐标的结构体

2.6GetAsyncKeyState

SHORT GetAsyncKeyState(
    int vKey
);
  1. 作用:将键盘上每个键的虚拟键值传递给函数,函数通过返回值来分辨按键的状态。
  2. 返回值:如果返回的16位的short数据中,最⾼位是1,说明按键的状态是按下,如果最⾼是0,说明按键的状态是抬起;如果最低位被置为1则说明该按键被按过,否则为0。
  3. 参数详见:虚拟键码 (Winuser.h) - Win32 apps | Microsoft Learn

三、API函数综合应用

3.1设置光标

void SetPos(short x, short y)
{
    COORD pos = { x, y };
    HANDLE hOutput = NULL;
    // 获取标准输出的句柄
    hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    // 设置标准输出设备上光标的位置为pos
    SetConsoleCursorPosition(hOutput, pos);
}

3.2判断一个键是否被按下

按下返回1,没有返回0


//函数写法
void Key_Press_Check()
{
    if((GetAsyncKeyState(VK) & 0x1)==1)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
//宏定义写法
#define KEY_PRESS_CHECK(VK) ( (GetAsyncKeyState(VK) & 0x1) ? 1 : 0 )

3.2基于控制台的游戏-贪吃蛇

详见博主另一篇博客:http://t.csdnimg.cn/9ULjS

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值