【C++】用Windows API在控制台实现选择选项

2023年8月23日,周三上午

今天上午花了一个小时来实现这个


这个程序在碰到边界时会发出声音,

通过调用Windows API的Beep函数来实现。

cpp 复制代码
#include<Windows.h>
#include<conio.h>
#include<iostream>
#include<cstdlib>

const int OPTIONS_NUMBER = 4;//规定选项数量

int optionIndex = 0;//全局变量,方便下面这几个函数之间进行通信

struct Option{//放在结构体里面,可以方便以后拓展
	std::string optionText;
};

//创建OPTIONS_NUMBER个选项
Option options[OPTIONS_NUMBER];

//初始化选项内容
void initOptions() {
	options[0].optionText = "选项0";
	options[1].optionText = "选项1";
	options[2].optionText = "选项2";
	options[3].optionText = "选项3";
}

//打印选项
void draw(int index) {

	system("cls");//清理屏幕

	for (int i = 0; i < OPTIONS_NUMBER; i++) {//打印选项
		if (i==index) {
			std::cout << ">>" << options[i].optionText << std::endl;
		}
		else {
			std::cout << "  " << options[i].optionText << std::endl;
		}
	}
}

//处理按键W和S,实现上下移动">>"
void processKeys(char key) {
	switch (key)
	{
	case 'w':
	case 'W':
		if ((optionIndex - 1) < 0) {
			Beep(1000,200);//Windows API函数,用于发出蜂鸣
			break;
		}
		optionIndex = optionIndex - 1;
		break;
	case 's':
	case 'S':
		if ((optionIndex + 1) > 3) {
			Beep(1000, 200);//Windows API函数,用于发出蜂鸣
			break;
		}
		optionIndex = optionIndex + 1;
		break;
	default:
		break;
	}
}

int main() {
	initOptions();
	while (1) {
		draw(optionIndex);
		char key = _getch();
		processKeys(key);
	}
}
相关推荐
xiangyun6111 分钟前
C++ priority_queue 底层:手撕二叉堆与 Top K 问题
c++·算法·面试·stl·1024程序员节
坤坤子吖29 分钟前
C++继承:友元、静态成员、多继承与组合
开发语言·c++·笔记·学习·1024程序员节
技术小甜甜1 小时前
【Cursor】Skill 被标黄色警告,怎么改成合格的 SKILL.md
开发语言·javascript·ai编程·cursor·1024程序员节·ai agent·skills
qz_Serene1 小时前
练习算法题:双指针 -cpp
c++·算法·leetcode·1024程序员节
扶尔魔ocy1 小时前
【C++开发】从裸指针到智能指针
c++·智能指针·1024程序员节
小小龙学IT1 小时前
Python Polars 高性能数据处理引擎深度解析
开发语言·python·rust·1024程序员节
quantdash_cc1 小时前
如何利用标的信息为研究股票池补充名称和交易所信息?
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
Helix2502 小时前
Windows ETW与KQL实战:终端性能诊断与遥测数据分析指南
windows·性能诊断·kql·etw·azure monitor·遥测数据·tracert
CRMEB系统商城2 小时前
家电零售的供应商协同与物流提效
java·开发语言·人工智能·小程序·1024程序员节
王大师王文峰3 小时前
Java+AI 面试题(二):业务场景设计 10 例【客服机器人、合同审查、Text2SQL、告警降噪、成本优化】场景题答法与追问链路
java·开发语言·人工智能