Меню является важной частью пользовательского интерфейса любой программы. Оно предоставляет пользователю доступ к различным функциям программы и позволяет выбрать нужные опции.
Для создания меню в программировании на языке С можно использовать библиотеку ncurses. Ncurses предоставляет функции для создания графического интерфейса в командной строке.
Вот пример фрагмента кода, который создает простое текстовое меню⁚
#include nlt;ncurses.hngt; int main{ initscr;//Инициализация ncurses noecho;//Отключение отображения введенных символов //Создание пунктов меню char *choices[] {″Пункт 1″, ″Пункт 2″, ″Пункт 3″, ″Выход″}; int n_choices sizeof(choices) / sizeof(char *); //Создание окна для меню WINDOW *menuwin; menuwin newwin(10, 40, 4, 4); box(menuwin, 0, 0);//Отрисовка рамки вокруг меню refresh;//Обновление экрана //Создание менеджера ресурсов для обработки событий keypad(menuwin, TRUE); //Отображение пунктов меню for(int i 0; i < n_choices; i ){ if(i 0){ wattron(menuwin, A_REVERSE);//Выделение выбранного пункта } mvwprintw(menuwin, i 1, 1, choices[i]); wattroff(menuwin, A_REVERSE);//Снятие выделения выбранного пункта } int choice; int highlight 0; //Обработка нажатий клавиш и выбор пунктов меню while(1){ choice wgetch(menuwin);//Считывание нажатой клавиши switch(choice){ case KEY_UP⁚ if(highlight 0){ highlight n_choices ― 1; } else{ highlight--; } break; case KEY_DOWN⁚ if(highlight n_choices — 1){ highlight 0; } else{ highlight ; } break; case 10://ENTER if(highlight n_choices ― 1){ endwin;//Завершение работы ncurses return 0; } break; } //Отображение пунктов меню с учетом выбранного пункта for(int i 0; i < n_choices; i ){ if(i highlight){ wattron(menuwin, A_REVERSE); } mvwprintw(menuwin, i 1, 1, choices[i]); wattroff(menuwin, A_REVERSE); } wrefresh(menuwin);//Обновление окна меню } endwin;//Завершение работы ncurses return 0; }
Этот фрагмент кода создает окно меню размером 10 на и отображает четыре пункта меню. Через клавиши вверх и вниз можно выбрать пункт меню, а нажатие клавиши ENTER выбирает пункт.
Используя функции wprintw
и wrefresh
, можно легко добавить дополнительные элементы и функционал в меню.
Таким образом, с помощью библиотеки ncurses и приведенного примера кода вы можете создать меню для программы на языке С с полным контролем над его отображением и обработкой событий.