Всем большое спасибо!
Не могли бы еще подсказать, где в этом куске ошибка.
Здесь рисуется простое однострочное меню, управляющееся стрелками влево, вправо и ентером, при нажатие на который вызывается функция и выводится ее результат.
Код: Выделить всё
//************Main Module**************//
static void finish(int sig);
int Menu;
static char* MenuStr[10] = {"Система","Версия ПО","Тип входа","Политика паролей","Файловая система","TCP/IP","Сервисы","Аудит","DDoS","Выход (ESC)"};
static int com;
int main(){
/* инициализируй свои не относящиеся к curses структуры данных здесь */
Menu = 0;
(void) signal(SIGINT, finish); /* подготовить прерывания для завершения */
(void) initscr(); /* инициализировать библиотеку curses */
keypad(stdscr, TRUE); /* разрешить преобразование кодов клавиатуры */
(void) nonl(); /* не делать NL->CR/NL при выводе */
(void) cbreak(); /* читать один символ за раз, не ждать \n */
(void) noecho(); /* не показывать ввод */
if (has_colors())
{
start_color();
/*
* Простое назначение цветов, часто нужное всем.
*/
init_pair(1, COLOR_GREEN, COLOR_BLACK);
init_pair(2, COLOR_MAGENTA, COLOR_BLACK);
}
while(1){
move(0,0);
int x = 0,y = 0,tx=0,ty=0;
if(com==27) break;
switch(com){
case 260:{
if(Menu>0) Menu--;
break;
}
case 261:{
if(Menu<9) Menu++;
break;
}
case 13:{
clear();
move(0,0);
switch(Menu){
case 0:{
printw("Информация о системе:\n",ComputerInform());
getch();
break;
}
}
break;
}}
color_set(1,NULL);
//*****draw menu*****///
for(int i = 0;i<10;i++){
if(Menu ==i){
getyx(stdscr,x,y);
}
printw("%s",MenuStr[i]);
getyx(stdscr,tx,ty);
move(tx,ty+1);
}
move(x,y);
color_set(2,NULL);
printw("%s",MenuStr[Menu]);
com = getch();
clear();
}
finish(0);
return 1; /* мы закончили */
}
static void finish(int sig)
{
endwin();
}
Но экран становится черным и ничего не выводится, только надпись, которую я печатаю до этого printw("Text");
Почему?