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

 

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

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

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

Определение и инициализация переменных класса представления
В первую очередь нужно добавить в класс представления несколько переменных: m_ClassName, m_Dragging, m_HCross, m_Point01d И m_PointOrigin. Для ЭТОГО откройте файл MiniDraw.h и добавьте выражения, выделенные полужирным шрифтом, в начало определения класса CMiniDrawView.
class CMiniDrawView : public View {
protected:
CString m_ClassName; int m_Dragging; HCURSOR m_HCross; CPoint m_Point01d; CPoint m_PointOrigin;
protected: // используются при сериализации CMiniDrawView(};
DECLARE_DYNCREATE(CMin iDrawView) // оставшаяся часть определения класса CMiniDrawView ...
Назначение этих элементов описано ниже.
Добавьте в конструктор класса CMiniDrawView в файле код инициализации переменных m_Dragging и m_HCross.
111111111111111111111111111111111111111111111111111111111111111 I
II Конструктор/деструктор класса CMiniDrawView
CMiniDrawView::CMiniDrawView() {
// TODO: Здесь добавьте код конструктора
m_Draggxng = 0;
m_HCross - AfxGetApp()->LoadStandardCursor (IDC_CROSS);
}
Переменная m_HCross хранит дескриптор указателя мыши, отображаемого программой, когда тот находится внутри окна представления. Функция AfxGetApp возвращает указатель на объект класса приложения (класс CMiniDrawApp, порожденный от класса cwinApp), где он используется для вызова функции LoadStandardCursor класса CWinApp. Эта функция при получении идентификатора idc_CROSS возвращает дескриптор стандартного крестообразного указателя. Позже вы увидите, как программа MiniDraw отображает указатель в окне представления (параграф "Функция OnMouseMove"). В табл. 10.1 приведены значения, которые можно передать в функцию LoadStandardCursor для получения дескрипторов других стандартных указателей. Описаны типичные назначения некоторых из них, хотя указатели можно использовать и в других целях.
Совет
При редактировании исходных файлов программ и ресурсов (ресурсы будут рассмотрены позже) желательно периодически сохранять результаты своей работы. Простейший способ сохранения - выбор команды Save All из меню File или щелчок на Save All панели инструментов Standard.
Таблица 10.1. Идентификаторы стандартных указателей Windows, которые можно передавать функции LoadStandardCursor
Значение Вид указателя
idc _arrow Стандартный указатель-стрелка
idc _cross Перекрестье, используемое для выбора
idc_ ibeam Указатель для редактирования текста
idc _sizeall Указатель из четырех стрелок для изменения размеров окна
idc sizenesw Двунаправленная стрелка, указывающая на северо-восток и юго-запад
idc_ _sizens Двунаправленная стрелка, указывающая на север и юг
idc sizenwse Двунаправленная стрелка, указывающая на северо-запад и юго-восток
idc_ _sizewe Двунаправленная стрелка, указывающая на запад и восток
idc_ uparrow Вертикальная стрелка
idc_ wait "Песочные часы", используемые при длительном выполнении задачи
Примечание
AfxGetApp - это глобальная функция библиотеки MFC, которая не является членом класса и содержит глобальные функции, начинающиеся с префикса Afx.
Добавление обработчиков сообщений
Чтобы пользователь мог рисовать линии внутри окна представления с помощью мыши, программа должна реагировать на события, происходящие внутри этого окна. Для обработки сообщения, передаваемого мышью, в класс представления необходимо добавить функцию обработки сообщений. Однако прежде чем объяснить вам, как создаются такие функции, кратко рассмотрим сами сообщения Windows.
Сообщения Windows
С каждым окном в графической программе связана функция, называемая процедурой окна. Когда происходит некоторое событие, операционная система вызывает эту функцию, передавая ей идентификатор происшедшего события и любые данные для его обработки. Подобный процесс называется передачей сообщения окну.
Процедура окна с помощью библиотеки MFC создается автоматически. Все окна в примерах программ, приведенных в этой части книги, управляются MFC. Процедуры окон выполняют минимальную стандартную обработку переданного
сообщения. Если необходима собственная обработка сообщения, то создается функция обработки сообщения, являющаяся членом класса управления окном. Для определения обработчика сообщения можно воспользоваться ClassWizard, как описано ниже.
Например, если указатель находится внутри окна представления, то при нажатии левой кнопки мыши передается идентификатор wm_lbuttondown. Чтобы предусмотреть собственную обработку этого сообщения, используйте мастер ClassWizard для создания функции класса представления, обрабатывающей данное сообщение.
Командные сообщения. MFC обеспечивает специальную обработку сообщений, генерируемых объектами пользовательского интерфейса, стандартными элементами, поддерживаемыми библиотекой MFC: меню, комбинации клавиш, кнопки панелей инструментов, строки состояния, элементы управления диалоговых окон. (Термин объект в данном случае относится не к объектам языка С++. Меню рассматриваются в этой и следующей главах, остальные объекты пользовательского интерфейса — в гл. 14.) Сообщения, генерируемые объектами пользовательского интерфейса, называют командными сообщениями. Каждый раз, когда пользователь выбирает объект интерфейса или когда один из этих объектов необходимо обновить, объект передает командное сообщение главному окну. Однако библиотека MFC сразу направляет сообщение объекту окна представления. Если он не имеет нужного обработчика, библиотека MFC направляет сообщение объекту документа. Если же объект документа не содержит обработчик, библиотека MFC направляет сообщение объекту главного окна программы. Если главное окно также не располагает обработчиком, сообщение направляется объекту приложения. Наконец, если объект приложения не обеспечивает обработку, то сообщение обрабатывается стандартным образом.
Предыдущая << 1 .. 80 81 82 83 84 85 < 86 > 87 88 89 90 91 92 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100