в конструкторе главного окна функцией
• включить в файл ресурсов описание меню
• назначить это меню приложению в конструкторе главного окна функцией AssignMenu()
• определить в классе главного окна таблицу откликов на сообщения от меню с указанием имен
функций откликов
• определить в программе сами функции отклика для обслуживанию пунктов меню
В нашем случае в таблице откликов указано, что сообщения WM_COMMAND от пункта меню CM_ABOUT будут обрабатываться функцией класса MyWindow CmAbout().
В функции CmAbout() создается объект класса TDialog с указателем myDlg и для этого объекта вызывается функция Execute(), которая создает и обслуживает модальное диалоговое окно (немодальный диалог активизируется с помощью функции TDialog: :Create()). Как известно, для модального диалога характерно блокирование (до его закрытия) органов управления остальных окон приложения. Все время, пока мы работаем с органами управления модального диалога, функция Execute() является активной. Закрытие модального диалога приводит к завершению этой функции и передаче управления в приложение.
Указатель myDlg на объект класса TDialog используется в программе лишь для вызова для этого объекта функции Execute(), и вводить для него специальное обозначение нет необходимости. Исключив явное именование этого указателя, можно упростить текст функции CmAbout():
void MyWindow::CmAbout(){
new TDialog(this,About)->Execute(); }
Поскольку в рассматриваемом приложении для украшения диалогового окна используется собственный значок, есть смысл назначить его значком всего приложения. Это процедура, подробно описанная в гл. 26, включает две операции: загрузку значка-ресурса из выполнимого модуля приложения и включение его в структуру WNDCLASS. Первая операция выполняется в конструкторе главного окна с помощью функции LoadIcon():
hIcon=GetApplication()->TModule::LoadIcon("MyIcon");
Функция LoadIcon() принадлежит классу TModule, и для вызова ее из функции класса MyWindow необходимо указать объект класса TModule или производного от него, для которого она вызывается. В нашем случае речь идет об экземпляре приложения, указатель на который можно получить с помощью функции TWindow::GetApplication(). Как уже отмечалось, если в функции некоторого класса вызывается функция другого класса, необходимо указать, какому классу она принадлежит, что и сделано с помощью конструкции TModule: :LoadIcon().
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий