Теперь, когда у нас есть работающее приложение, мы можем его модифицировать с помощью мастера ClassWizard. Если приложение уже загружено, выберите пункт ClassWizard из меню View. На рис. 1.8 изображено диалоговое окно мастера ClassWizard.
Рис. 1.8. Диалоговое окно мастера ClassWizard
В диалоговом окне мастера ClassWizard есть пять вкладок. Выберите вкладку Message Map, как показано на рисунке. В диалоговом окне будут показаны установленные обработчики событий для класса, имя которого вы выбираете в поле со списком Class name. Список Object IDs содержит имя класса и список идентификаторов для меню. Вы добавляете обработчик событий, выбрав один из идентификаторов меню или имя класса и указав требуемое сообщение в списке Messages. Новый обработчик сообщений будет создан после щелчка по кнопке Add Function.
Давайте создадим обработчик событий, который будет сообщать о нажатии на клавиши. Это можно сделать установив обработчик для сообщения WM_KEYDOWN. Система Windows посылает сообщение WM_KEYDOWN при нажатии на любую клавишу.
Убедитесь, что в поле со списком Class name выбран класс CSampleView и этот же класс отмечен в списке Object IDs. В списке Message list отметьте строку WM_KEYDOWN (вам понадобится прокрутить список, чтобы найти строку WM_KEYDOWN). После того, как произведете выбор, щелкните по кнопке Add Function. Мастер AppWizard добавит строку WM_KEYDOWN в список Members functions (в нем отображаются существующие в программе обработчики) и добавит новый обработчик событий в текст программы. Теперь щелкните по кнопке Edit code. Мастер ClassWizard откроет окно с текстом программы. Созданный нами новый обработчик показан на рис. 1.9.
Рис. 1.9. Созданный нами обработчик события WM_KEYDOWN
ЗАМЕЧАНИЕ | Обратите внимание на код обработчика событий. Обратите внимание на код, который мастер ClassWizard помещает в новый обработчик событий. ClassWizard отмечает наилучшее место для добавления вашего кода, помещая туда комментарий. Иногда ваш код располагается перед вызовом функции базового класса, иногда — после. В некоторых случаях ClassWizard вообще не будет вызывать функции базового класса. |
ЗАМЕЧАНИЕ | Этот пример будет работать, только если компилируется в отладочном режиме (Debug mode) и запускается из программы Developer Studio потому что макроопределение TRACE в режиме Release mode не работает. |