The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

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

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

Предыдущая  Содержание  Следующая 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-ка символов являются скорее нормой, чем исключением, оформление меню, вероятно, следует пересмотреть с учётом этого.

 

 

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