Возвращаемые значения

Предыдущая  Содержание  Следующая V*D*V

В оригинальном дизайне все функции обработчиков кнопок и действий возвращают статус. В предыдущих примерах показано только два возможных значения, OK и NOT_OK. Было бы лучше предоставлять пользователю более конкретную информацию. Программист может заранее определить коды ошибок и даже массив строк, соответствующих сообщениям об ошибках. Функции обработки нажатий могут возвращать эти коды ошибок, и функция mdi() с помощью таблицы может преобразовывать эти коды в соответствующие строки ошибок.

 

В предыдущих примерах были варианты меню для возврата в предыдущее меню или непосредственно в главном меню. В действительности, это пустая трата вариантов выбора и нелогично для пользователей приложений DOS, которые часто ожидают для возвращения в предыдущее меню нажатия кнопок ESC или F10. Оператор switch() в mdi(), безусловно, может найти такой код, но программа должна знать, в какое меню надо вернуться. Решение заключается в добавлении идентификационного кода родительского меню в каждую структуру MENU. Программист может назначить обратную ссылку для каждого пункта меню.

 

Часто также удобно иметь глобальную переменную для обозначения идентификатора родительского меню. Программисты могут привести примеры, когда в одно подменю можно добраться из трёх или четырёх меню. Когда пользователь нажимает ESC, программа должна вернуться в правильное меню. В этом случае родительское меню не известно во время компиляции. Так что при входе в такое подменю присваиваем переменной в памяти альтернативный идентификатор родительского меню. Обработчик ESC в mdi() сначала проверит, установлена ли переменная. Если установлена, он переходит к меню с этим ID и очищает переменную. Если она не установлена, он смотрит в структуру MENU активного меню и использует указанный в ней ID родительского меню.

 

Приведенные выше примеры редакторов предполагают, что ширина поля редактирования был так мала, что можно поместить строку ввода после строки подсказки. Если строки подсказок имеют 30 символов и мы позволяем иметь некоторое пространство до достижения области правки, мы ограничены от 40-ка до 50-ти символами в терминале с 80-ти символьной строкой. Это может быть недостаточным для некоторых приложений.

 

Одним из решений является указать ширину поля в структуре SELECTION для каждого варианта, содержащего строку подсказки и функцию обработчика нажатий (ноль для нередактируемых полей). Функция draw_menu могла бы теперь быть разработана для обработки дополнительных полей, помещая дополнительные данные на дополнительные строки. Программист должен быть осторожным, потому что теперь меню с 10-ю вариантами может занять 24 строки на странице, если многие варианты длиннее, чем одна строка. Другой программист мог бы добавить новые варианты, которые используют три строки, и теперь меню уже не умещается на экране, хотя оно содержит только 11 параметров.

 

Если поля для ввода более 40-ка символов являются скорее нормой, чем исключением, оформление меню, вероятно, следует пересмотреть с учётом этого.

 

 

Предыдущая  Содержание  Следующая