Ncurses菜单 - 记住选择

时间:2012-06-13 13:59:52

标签: c menu ncurses

我正在使用Ncurses库来做一些交互式菜单,我不知道如何做一件事。我有简单的菜单,只有很少的选项,我转向O_ONEVALUE可以同时选择很多选项,在发布菜单之前我得到所有菜单项并将它们标记为选中或不选,具体取决于位掩码我保存在其他地方,但是当菜单发布时,每个选项都关闭,这里是代码:

//acquiring menu items
ITEM** header_items = menu_items(params.header_opts_menu);
ITEM* cur_item;
if (header_items == NULL)
{
    client_cleanup();
    syslog_nsys_f(LOG_ERR, "error while getting header menu items");
}
//selecting appropriate items
long header_menu_items_count = ARRAY_SIZE(header_menu_choices);
for (i = 0; i < header_menu_items_count; ++i)
{
    if ((params.header_flags & (1 << (i))) != 0)
        decision = TRUE;
    else
        decision = FALSE;
    if (set_item_value(header_items[i], TRUE) != E_OK)
    {
        client_cleanup();
        syslog_nsys_f(LOG_ERR,"error while setting menu item value");
    }
}
if (post_menu(params.header_opts_menu) != E_OK)
{
    client_cleanup();
    syslog_nsys_f(LOG_ERR,"error while posting header options menu");
}
set_menu_items(params.header_opts_menu,header_items);
refresh();

即使我将每个项目的值设置为TRUE也没有任何反应,我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

看起来你在调用post_menu后试图调用set_menu_items。检查set_menu_items的返回值,你可能会收到E_POSTED错误。