Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том1)" -> 87

Visual С++ 6. Полное руководство: В 2 т.(том1) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том1) — Бином, 2006. — 569 c.
Скачать (прямая ссылка): vicualcc2006t1.djvu
Предыдущая << 1 .. 81 82 83 84 85 86 < 87 > 88 89 90 91 92 93 .. 204 >> Следующая

Таким образом, библиотека MFC расширяет основной механизм сообщений, чтобы командные сообщения обрабатывались не только объектами, управляющими окнами, но и любыми другими объектами приложения. Каждый из них принадлежит классу, прямо или косвенно порожденному от класса CCmdTarget, реализующего механизм передачи сообщений.
Важной особенностью такого механизма является то, что программа может обрабатывать нужное сообщение внутри наиболее подходящего для этого класса. Например, в программе, созданной мастером AppWizard, команда Exit в меню File обрабатывается классом приложения, так как эта команда воздействует на приложение в целом. С другой стороны, команда Save в меню File обрабатывается классом документа, так как этот класс отвечает за хранение и запись данных документа.
Далее вы узнаете, как добавлять команды меню и другие объекты интерфейса, определять, какому именно классу следует обрабатывать конкретное сообщение, и как создавать обработчики сообщений.
Примечание
Более подробное объяснение механизма перенаправления сообщений и их обработки смотрите в следующих разделах справочной системы: Visual С++ Documentation, Using Visual С++, Visual С++ Programmees Guide, Adding Program Functionality, Details, Message Handling and Mapping Topics.
Функция OnLButtonDown
Следующая задача состоит в определении обработчика сообщения wm_lbuttondown, которое передается при каждом нажатии левой кнопки мыши,
если указатель находится внутри окна представления. Для определения функции выполните следующие действия.
1. Убедитесь, что в Developer Studio открыт проект MiniDraw, и выберите в меню View команду Class Wizard... или нажмите Ctrl+W. Откроется диалоговое окно мастера Class Wizard.
2. В диалоговом окне мастера ClassWizard откройте вкладку Message Maps, позволяющую определить обработчик сообщений.
3. В списке Class name выберите класс CMiniDrawView, чтобы добавить функцию обработки сообщений в класс представления.
4. В списке Object IDs выберите пункт CMiniDrawView. Выбор класса CMiniDrawView задает функцию-член для обработки любого уведомляющего сообщения, переданного окну представления, что позволяет переопределить одну из виртуальных функций, которую класс CMiniDrawView наследует от cview и других базовых классов библиотеки MFC. Другие пункты в списке Object IDs определяют сообщения, поступающие от объектов интерфейса (команды меню). Выбор одного из этих пунктов задает обработчик сообщений, поступающих от выбранного объекта (гл. 11).
5. В списке сообщений Messages выберите идентификатор wmlbuttondown, обрабатываемый определяемой функцией. Messages содержит идентификаторы всех уведомляющих сообщений, которые передаются окну представления (идентификаторы сообщений - это константы, записанные заглавными буквами и начинающиеся с префикса wm_). Список Messages также содержит имена всех виртуальных функций, принадлежащих классу cview. Их можно выбирать, чтобы переопределять стандартные функции (параграф "Удаление данных документа" гл. 11). Обратите внимание: при выборе конкретного идентификатора сообщения или виртуальной функции внизу диалогового окна ClassWizard появляется соответствующее краткое описание.
6. Щелкните на кнопке AddFunction. Теперь ClassWizard создает шаблон обработчика сообщения с именем OnLButtonDown. В частности, ClassWizard объявляет функцию в определении класса CMiniDrawView в файле MiniDrawView.h, вносит ее определение в файл MiniDrawView.cpp и добавляет функцию в схему сообщении класса. (Ее структура описана во врезке этого параграфа. Врезка -текст на сером фоне.) Теперь имя сообщения в списке Messages отображается полужирным шрифтом - для него задан обработчик. Заметьте: имя функции и сообщения добавлено в список функций Member functions. Пункт, отмеченный буквой "W", означает обработчик сообщения Windows; "V" - виртуальную функцию (рис. 10.4).
7. Щелкните на Edit Code. Диалоговое окно ClassWizard закроется. Мастер ClassWizard откроет файл MiniDrawView.cpp (если он еще не открыт) и отобразит только что созданную функцию OnLButtonDown, чтобы можно было добавить ее код.
8. Добавьте в функцию OnLButtonDown операторы, выделенные полужирным шрифтом.
void CMiniDrawView::OnLButtonDown(uint nFlags, CPoint point) {
II todo: Здесь добавьте собственный код обработчика // и/или вызов стандартного обработчика
m_PointOrigin «¦ point;
m_Point01d = point; SetCapture О ; m_Dragging = 1 ; RECT Rect;
GetClientRect (URect) ; ClientToScreen (URect); : :ClipCursor (&Rect) ;
CView::OnLButtonDown(nFlags, point);
MFC DdssWizdit)
Messase Map! | MmbaVaiiabus | Automate» | ActiveX Evonts | Oasslnfo |
jMruDraw
йК..ЩЩмШЫН^^М\..\ЙЫ>н»Мт.(^1> ObiactlD*: M темах»:
ID APP ABOUT ID APP EX1T ID_EDlf_COPY ID_ED1T_CUT ID_EDIT_PASTE ID_EDIT_UNDO
:' : Merobot furiclfon*r;
| V OnPiaw
V PreueateWindow
0N.WM.UUTION0O4W
Oesctiplion: indcate» whan Wt mouse t«iton it ptitad
wm keyup A
wm K1UFDCUS
wm LBUTTDNDBLCLK
WM LBUTTONDOWN Ш
wm ibuttonup „ j
wm"mousemove
wm_mousewheel
3 Cancel j
Предыдущая << 1 .. 81 82 83 84 85 86 < 87 > 88 89 90 91 92 93 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100