在对话框(libdialog)中获取 dialog_menu 的选择索引
Get selection index of dialog_menu in dialog (libdialog)
我正在使用 dialog
in C and have been reading the documentation here 实现一个小型对话系统,但不知道如何获取 dialog_menu
命令的选择索引。
我知道 init_dialog(FILE *, FILE *)
函数在这里将 stdout
作为输出,但我不认为无论如何都可以将输出重定向到变量。
当运行此代码时,按下"Exit"按钮returns代码1,同时按下两个选项中的任何一个returns0。我如何区分这些选择?
#include <dialog.h>
#include <stdio.h>
#include <stdlib.h>
#define LEN(arr) ((int) (sizeof(arr) / sizeof(arr)[0]))
int
menu()
{
int select;
char *modes[] =
{
"1", "The first option",
"2", "The second option"
};
init_dialog(stdin, stdout);
select = dialog_menu("test_app", "Choose an option.", 0, 0, 0, LEN(modes) / 2, modes);
end_dialog();
return select;
}
int
main()
{
int status;
status = menu();
printf("%d\n", status);
return status;
}
dialog
库包含一个名为 dialog_vars
的结构,其中包含一个变量 char *input_result
。
在菜单中进行选择时,input_result
设置为 标签的值 ,(在提供的源代码中,该标签是 "1"
或 "2"
,如果根本没有选择,NULL
指针。
从这里,可以执行 strcmp
以确定选择了哪个响应。
PS: 始终确保在重复对话之前调用 dlg_clr_result()
因为选择是 连接 到 input_result
因此不调用该函数,新结果将附加到旧结果上而不是替换它。
示例:
#include <dialog.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN(arr) ((int) (sizeof(arr) / sizeof(arr)[0]))
void
menu()
{
char *modes[] =
{
"1", "The first option",
"2", "The second option"
};
init_dialog(stdin, stdout);
dialog_menu("test_app", "Choose an option.", 0, 0, 0, LEN(modes) / 2, modes);
end_dialog();
char *result = dialog_vars.input_result; /* this will be "1", "2" or NULL */
init_dialog(stdin, stdout);
dialog_menu("test_app", strcmp(result, "1") ? "One" : "Two", 0, 0, 1);
end_dialog();
}
int
main()
{
menu();
return 0;
}
我正在使用 dialog
in C and have been reading the documentation here 实现一个小型对话系统,但不知道如何获取 dialog_menu
命令的选择索引。
我知道 init_dialog(FILE *, FILE *)
函数在这里将 stdout
作为输出,但我不认为无论如何都可以将输出重定向到变量。
当运行此代码时,按下"Exit"按钮returns代码1,同时按下两个选项中的任何一个returns0。我如何区分这些选择?
#include <dialog.h>
#include <stdio.h>
#include <stdlib.h>
#define LEN(arr) ((int) (sizeof(arr) / sizeof(arr)[0]))
int
menu()
{
int select;
char *modes[] =
{
"1", "The first option",
"2", "The second option"
};
init_dialog(stdin, stdout);
select = dialog_menu("test_app", "Choose an option.", 0, 0, 0, LEN(modes) / 2, modes);
end_dialog();
return select;
}
int
main()
{
int status;
status = menu();
printf("%d\n", status);
return status;
}
dialog
库包含一个名为 dialog_vars
的结构,其中包含一个变量 char *input_result
。
在菜单中进行选择时,input_result
设置为 标签的值 ,(在提供的源代码中,该标签是 "1"
或 "2"
,如果根本没有选择,NULL
指针。
从这里,可以执行 strcmp
以确定选择了哪个响应。
PS: 始终确保在重复对话之前调用 dlg_clr_result()
因为选择是 连接 到 input_result
因此不调用该函数,新结果将附加到旧结果上而不是替换它。
示例:
#include <dialog.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LEN(arr) ((int) (sizeof(arr) / sizeof(arr)[0]))
void
menu()
{
char *modes[] =
{
"1", "The first option",
"2", "The second option"
};
init_dialog(stdin, stdout);
dialog_menu("test_app", "Choose an option.", 0, 0, 0, LEN(modes) / 2, modes);
end_dialog();
char *result = dialog_vars.input_result; /* this will be "1", "2" or NULL */
init_dialog(stdin, stdout);
dialog_menu("test_app", strcmp(result, "1") ? "One" : "Two", 0, 0, 1);
end_dialog();
}
int
main()
{
menu();
return 0;
}