Advertisement
MARSHAL327

Untitled

Nov 30th, 2019
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. // названия пунктов
  2. const string items[7] = {
  3.     "   Ввод данных               ",
  4.     "   Печать данных             ",
  5.     "   Сохранить данные          ",
  6.     "   Сохранить в другой файл   ",
  7.     "   Поиск                     ",
  8.     "   Выбрать другой файл       ",
  9.     "   Выход из программы        " };
  10.  
  11. // ==========ШАБЛОН ПЕЧАТИ МЕНЮ==========
  12. void print_menu(int sym, const string items[], const int N_ITEMS) {
  13.     for (int i = 1; i <= N_ITEMS; i++) {
  14.         SetColor(7, 0);
  15.         gotoxy((width / 2) - 6, (height / 2) + i - 3); // ставим меню в центр
  16.         if (i == sym) {
  17.             SetColor(7, 5);
  18.         }
  19.         cout << items[i - 1] << endl;
  20.         SetColor(7, 0);
  21.     }
  22. }
  23.  
  24. // ==========МЕНЮ==========
  25. int menu(int& active, const string items[], int num_el) {
  26.     wint_t buf;
  27.  
  28.     do {
  29.         cls();
  30.         print_menu(active, items, num_el);
  31.  
  32.         buf = _getwch();
  33.         switch (buf) {
  34.         case up: // клавиша вверх
  35.             if (active > 1) active--;
  36.             break;
  37.         case down: // клавиша вниз
  38.             if (active < num_el) active++;
  39.             break;
  40.         case enter: // клавиша enter
  41.             return active;
  42.         case esc: // клавиша escape
  43.             return -1;
  44.         }
  45.     } while (1);
  46. }
  47.  
  48. int current = 1;
  49.  
  50. // ==========вызов ф-ии==========
  51. menu(current, items, 7);
  52.  
  53. /*
  54. первый парметр - активный элемент
  55. второй параметр - массив из названий пунктов меню
  56. третий параметр - кол-во пунктов в меню
  57. */
  58.  
  59. // ==========УСТАНОВКА ЦВЕТА ТЕКСТА И ФОНА==========
  60. void SetColor(int text, int bg) {
  61.     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  62.     SetConsoleTextAttribute(hStdOut, (WORD)((bg << 4) | text));
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement