Кодирование и отладка выбора пунктов меню в С++


Кодирование и отладка выбора пунктов меню в языке С++Для обеспечения возможности выбора пунктов меню в раздел описания переменных добавляются в следующие строки:

"int key – это код клавиши"; «"unsigned int prev – активирует номер предыдущего пункта меню"; "unsigned int item - номер пункта меню". Кроме этого, необходимо описать функцию-заглушку stub, которая просто будет выводить в рабочее окно сообщение о том, что вызван соответствующий пункт меню. Так как после завершения работы этой функции рабочее окно придется очищать от выведенного сообщения, то необходимо так же определить вспомогательную функцию clear. Заголовки функций:

"unsigned int item (void stub); //заглушка" и "void clear(void) //очистка текстового окна" следует поместить в раздел описания прототипов функций, а определения функций разместить после кода главной функции.

После таких дополнений главная функция будет реагировать на события, вызванные нажатием клавиш на клавиатуре. Для этого в цикле с помощью функции getch() считывается код нажатой клавиши, который запоминается в переменной key. Анализируя значение переменной key, можно выяснить, какая клавиша была нажата. Например, клавиша Enter имеет код 13, клавиша Esc – 27, Tab – 9. Нулевое значение этой переменной сигнализирует о том, что была нажата специальная клавиша или комбинация специальных клавиш, генерирующих расширенные коды. В этом случае при повторном вызове getch() можно считать из буфера ввода дополнительный байт и таким образом выяснить, какая специальная клавиша была нажата.

Значение переменной key, анализируется инструкцией switch (key). Если была нажата клавиша Enter, то выбран один из пунктов меню. В этом случае выполняется инструкция switch(item), в которой в зависимости от номера выбранного пункта меню осуществляется вызов предварительной версии функции showbase, либо заглушки. Если была нажата клавиша Left или комбинация клавиш Shift+Tab, то это означает, что пользовать перемещается по системе пунктов меню влево. В этом случае необходимо просто определить новые значения текущего (item) и предыдущего (prev) пунктов меню. Аналогичные действия выполняются при перемещении вправо (нажаты клавиши Right или Tab). После выхода из управляющей конструкции switch (key) осуществляется «перерисовка» текущего и предыдущего пунктов меню соответствующими цветами. Для этого вызывается функция drawrtem.


Только материалы из рубрики ТИЦ свободны для копирования без каких-либо условий. Ссылка на остальные материалы обязательна.