【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);
	}
}
相关推荐
lqqjuly23 分钟前
C++ 完整知识体系—从基础语法到现代 C++23 的系统性总结
c++·c++23
王老师青少年编程1 小时前
信奥赛C++提高组csp-s之FHQ Treap
c++·csp·平衡树·信奥赛·csp-s·提高组·fhq treap
星恒随风1 小时前
Python 基础语法详解(一):从表达式、变量到数据类型
开发语言·笔记·python·学习
888CC++1 小时前
java 并发编程
java·开发语言·python
罗超驿1 小时前
18.Web API 实战:元素与表单属性的获取和修改
开发语言·前端·javascript
阿汤猫6662 小时前
基于OpenCode的Harness架构实战验收指南v3.0 (windows系统)
windows·prompt
被子你放开我2 小时前
CRMEB PHP多商户升级4.0太麻烦了
开发语言·php
阿里嘎多学长2 小时前
2026-06-01 GitHub 热点项目精选
开发语言·程序员·github·代码托管
醒醒该学习了!2 小时前
Anaconda安装教程+第一个python例子
开发语言·python