- 论坛徽章:
- 0
|
suse linux在用curses 和menu 编制菜单时,菜单项只能用英文不能用中文,不知是何因,是不是MENU不支持中文?
在纯英文菜单下光标能在"Choice1", "Choice2", "Choice3", "Choice4", "Exit",之间移动,
而将"Choice3"改为“选择3”则只能在"Choice1", "Choice2",也不显示后面的菜单(能在第8行显示“退出”)。原代码如下 :
#include <curses.h>
#include <menu.h>
#include <stdlib.h>
#include <string.h>
#define ARRAY_SIZE(a)(sizeof(a)/sizeof(a[0]))
#define CTRLD 4
char *choices[]={
"Choice1", "Choice2", "选择3", "Choice4", "Exit",
};
int main()
{
ITEM **my_items;
int c;
MENU *my_menu;
int n_choices,i;
ITEM *cur_item;
initscr();
cbreak();
noecho();
keypad(stdscr,TRUE);
n_choices=ARRAY_SIZE(choices);
mvprintw(7,0,"n=%3d",n_choices);
my_items=(ITEM**)calloc(n_choices+1,sizeof(ITEM*));
for(i=0;i<n_choices;++i)
{
my_items[i]=new_item(choices[i],choices[i]);
}
my_items[n_choices]=(ITEM*)NULL;
my_menu=new_menu((ITEM**)my_items);
mvprintw(8,0,"F1 to 退出(Exit)");
mvprintw(LINES - 2,0,"F1 to 退出(Exit)");
post_menu(my_menu);
refresh();
while((c=getch())!=KEY_F(1))
{
switch(c)
{
case KEY_DOWN:
menu_driver(my_menu,REQ_DOWN_ITEM);
break;
case KEY_UP:
menu_driver(my_menu,REQ_UP_ITEM);
break;
}
}
free_item(my_items[0]);
free_item(my_items[1]);
free_menu(my_menu);
endwin();
}
求高手指点 |
|