Я бы посоветовал сделать все типами.
Тип кнопка
Тип скроллер
Тип флажок
Тип экран
потом описать их, причем функции обновления кнопок и про. гаджетов должны возвращать ИД(идентификационный номер) того гаджета который был активирован.
Все эти гаджеты размещаются в спец. группах - экранах.
Делаешь функцию обновления экрана, параметров которой евляется указатель на экран. Она будет обновлять все гаджеты которые расположены на этом экране.
А сам цикл меню можно при этом организовать так
MainEvent=MM_MAINSCREEN
;.....................................
;проверка переменной главного события
Select MainEvent
;если произошло событие - нажата кнопка "новая игра" главного экрана
;то обновляем экран с выбором сложности
Case MM_NEWGAME
event=UpdateScreen(ScreenChooseGame);обновление экрана выбора сложности
If event Then
MainEvent=event
End If
;Если произошло событие - нажата кнопка "опции" главного экрана
;То обновляем экран опций из которого можно выйти в главный экран
;кнопкой "Назад", при этом произойдет событие MM_MAINSCREEN
;которое вернет нас в главный экран
Case MM_OPTIONS
event=UpdateScreen(ScreenOptions);обновление экрана опций
If event Then
MainEvent=event
End If
;Ну а есл мы нажади кнопку "выход", то соответственно выполняется комманда выхода
Case MM_QUIT
End
;.........................................
;По умолчанию переменная события стоит на событии обновления главного
;экрана. На главном экране расположены к примеру кнопки "Новая игра"
;"опции" и "выход", соответственно к ним прикреплены соответствующие события
Case MM_MAINSCREEN
event=UpdateScreen(ScreenMainScreen)
If event Then
MainEvent=event
End If
End Select
Заранее описав константы событий(ИД гаджетов) можно переходить с одного экрана на другой и т.п.
Вобщем примерно так.
Если что непонятно - спрашивай.