C++ 控制台上下选择栏实现:简单易懂的代码示例

以下是一个简单的 C++ 控制台程序,实现了上下选择栏的功能:

#include <iostream>
#include <conio.h>

void drawMenu(int selectedOption) {
    system("cls");  // 清空控制台

    // 设置控制台文本属性
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, 15);  // 白色背景,黑色前景

    // 输出第一个选项
    if (selectedOption == 1) {
        // 设置控制台文本属性
        SetConsoleTextAttribute(hConsole, 0);  // 黑色背景,白色前景
    }
    std::cout << '  1  ' << std::endl;

    // 设置控制台文本属性
    SetConsoleTextAttribute(hConsole, 15);  // 白色背景,黑色前景

    // 输出第二个选项
    if (selectedOption == 2) {
        // 设置控制台文本属性
        SetConsoleTextAttribute(hConsole, 0);  // 黑色背景,白色前景
    }
    std::cout << '  2  ' << std::endl;
}

int main() {
    int selectedOption = 1;  // 当前选项,默认为第一个

    drawMenu(selectedOption);

    while (true) {
        // 监听键盘输入
        char input = _getch();

        if (input == 'w' || input == 'W') {
            // 上移选项
            selectedOption = (selectedOption == 1) ? 2 : 1;
        } else if (input == 's' || input == 'S') {
            // 下移选项
            selectedOption = (selectedOption == 2) ? 1 : 2;
        } else if (input == '\r') {
            // 按下回车键确认选择

            // 处理选项
            std::cout << "You selected option " << selectedOption << std::endl;
            break;
        }

        drawMenu(selectedOption);
    }

    return 0;
}

在这个程序中,使用了 Windows API 中的 GetStdHandleSetConsoleTextAttribute 函数来设置控制台的文本颜色和背景颜色。通过不断监听键盘输入,实现了上下选择和确认选择的功能。选中的选项背景会变为白色。

请注意,这个程序只在 Windows 平台上可用,如果你在其他操作系统上运行,可能会出现错误。

本文档包含以下内容:

  • C++ 控制台上下选择栏实现: 详细介绍如何使用 C++ 代码实现上下选择栏功能。
  • 代码示例: 提供完整的 C++ 代码示例,方便你直接复制和运行。
  • Windows API 函数: 解释了 GetStdHandleSetConsoleTextAttribute 函数的作用,并说明如何使用它们来设置控制台文本颜色和背景颜色。
  • 平台兼容性: 指出该程序只在 Windows 平台上可用。

使用场景:

该程序可以用于实现简单的控制台菜单,例如:

  • 用户可以选择不同的选项,例如“开始游戏”、“读取存档”和“退出游戏”。
  • 用户可以选择不同的难度级别,例如“简单”、“中等”和“困难”。

进一步改进:

你可以根据自己的需要对该程序进行进一步的改进,例如:

  • 添加更多的选项。
  • 使用图形库来绘制更美观的菜单。
  • 实现更复杂的功能,例如数据输入和处理。

希望本教程能够帮助你理解如何在 C++ 控制台中实现上下选择栏功能。如果你有任何疑问,请随时留言。

C++ 控制台上下选择栏实现:简单易懂的代码示例

原文地址: https://www.cveoy.top/t/topic/bIQk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录