Подменю является модальным окном, поэтому при активизации любого из подменю нажатие клавиш перестанет приводить к выводу их кодов в область сообщений. Теперь следует запустить движение колеса и вызвать подменю (см. рис. 5.2). Колесо не останавливается, то есть сообщения WMJTIMER, как и другие программные сообщения, развернутым подменю не блокируются. Для запуска движения достаточно включить первый таймер. Следует найти в ветви обработчика OnMenuC) следующие строки:
DefWi ndowProc С hWnd.WM_SYSCOMMAND.SC_KEYMENU.'F'); // SetTimerChWnd.1.40.NULL); Теперь нужно раскомментировать строку, в которой запускается таймер. Легко заметить, что при выборе этих пунктов меню колесо по-прежнему не запускается до тех пор, пока на экране остается окно подменю File. Сообщения WMJTIMER не блокируются развернутым подменю, следовательно, до строки SetTimer С), включающей генерацию этих сообщений, процесс просто не доходит. Функция DefWi ndowProc С) покажет подменю и, пока оно развернуто, не возвратит управления. Действительно, как только подменю исчезает, начинается движение колеса.
Движению не мешает и окно MessageBoxC), выводимое в результате выполнения пункта Load On. Эти проверки подтверждают, что функция DefWi ndowProc С )создает модальное окно с изображением подменю. Утилитой Spy+ можно даже подсмотреть строку-идентификатор оконного класса. Этот идентификатор имеет значение #32768 [MenuPopUp].
Приведенная в рассмотренном примере функция OnEnterIdl е является простейшим примером реализации в приложении «модели пользователя» и ее применения для обучения работе с программой.
Создание и использование меню
Реальные коммерческие программы настолько сложны, что кроме документации и оперативной справки создаются дополнительные программы для обучения пользованию основным программным продуктом. Например, для обучения пользователей программы «1С:Бухгалтерия» создается даже обучающий видеокурс.
Построение обучающих программ на основе проигрывания AVI-файлов является типичной ситуацией. Разработаны даже специальные средства, позволяющие автоматизировать создание обучающего видеофильма на основе сохранения снимков экрана во время работы опытного пользователя.