Динамические меню

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

В большинстве приложений строки подсказок в меню и действия будут определяться программистом во время компиляции. Тем не менее, есть случаи, когда пользователь может захотеть меню, в которых подсказка является динамической. Используя пример нашего банкомата с продлением лицензии, мы могли бы запрашивать у пользователя имена ближайших родственников в одном меню и переходить к другому меню редактора, чтобы запросить пользователя, что является точным соотношением для каждого данного имени:

 

Barney Williams:      Father

Eleanor Williams:     Mother

Michael Tate:        Husband

Kelly Williams:       Sister

Robert Williams:     Brother

 

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

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