c++ - 使用 C++ 在 ncurses 中打印子菜单的问题

标签 c++ ncurses

我正在尝试打印与 ncurses 显示的主菜单关联的子菜单。 这是我组织它的方式:

  1. 做{} while ();使用 wgetch 循环获取用户的键盘输入
  2. 如果用户按下回车键,则在清除整个屏幕后显示子菜单条目。

不幸的是,我无法通过第二步,子菜单从未出现在屏幕上。

#include <ncurses.h>
#include <iostream>
#include <string>

int main()
{ 
    std::string nameMainMenuExample = "/parent1/folder";

    std::string nameSubMenuExample = "/folder/file";

    // initialize ncurses
    WINDOW *win;
    win = initscr();
    raw();
    curs_set(0);
    cbreak();
    box(win, 0, 0); 
    refresh();
    wrefresh(win);
    keypad(win, true);
    // end initialize ncurses

    int highlight = 0;
    int choice;

    // PRESS 'a' to ESCAPE LOOP
    do {
        mvwprintw(win, 1, 1, nameMainMenuExample.c_str());
        switch (choice) {
            case KEY_UP:
                --highlight;
                if (highlight == -1) {
                    highlight = 0;
                }
                break;
            case KEY_DOWN:
                ++highlight;
                if (highlight == 1) {
                    highlight = 0;
                }
                break;
            case KEY_ENTER:                        // Enter key pressed
                clear();
                mvwprintw(win, 1, 1, nameSubMenuExample.c_str());
                refresh();
                break;
            default:
                break;
        }
    } while ((choice = wgetch(win)) != 97); // random choice a == 97

    endwin();
    return 0;
}

我只是希望在 ncurses 清除主菜单的屏幕后,子菜单会打印在屏幕上。 谢谢

最佳答案

如果你想在回车键上激活子菜单,你应该检查 wgetch 根据 KEY_ENTER 返回的值(在数字上类似于 16777221),而不是 10 .

关于c++ - 使用 C++ 在 ncurses 中打印子菜单的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55884876/

相关文章:

c - 即使导出 NCURSES_NO_UTF8_ACS=1,ACS 字符也无法在腻子中工作

c++ - double、long double、float 和 float128 的比较?

c++ - Libcurl 错误将接收到的数据写入磁盘/应用程序失败

c++ - 为什么具有 CRT 版本 30729.4148 的嵌入式 list 的程序在运行时在 winsxs 文件夹中以 30729.6161(最新)运行?

C 在ncurses中打印指定坐标的值

c++ - 如何动态更新 ncurses 中的菜单项?

c - 如何在打开 `raw()` 设置的情况下终止 ncurses 程序?

c++ - popen() 和 printf 与 C++ 中的 cout 之间的奇怪交互

c++ - 关于为什么 C++(社区)插件不使用声纳运行器生成 LOC 的任何建议?

c - 获取终端光标位置