- •Однодокументный интерфейс Создание проекта
- •Окно Project Worcspace
- •Просмотр дерева наследования
- •Задание 1.1: Создание нового проекта с использованием AppWizard
- •Выбор имени и директория проекта в AppWizard
- •Выбор опций для проекта Ex1
- •Создание проекта Ex1
- •Использование окна проекта ClassView
- •Использование окна проекта FileView
- •Использование окна проекта ResourceView
- •Работа с графикой
- •Задание 1.2
- •Добавим обработчик сообщения мыши
- •Сформируем метода OnLButtonDown, OnMouseMove и OnLButtonUp
- •Упражнение 2: Вывод диалогового окна при нажатии правой кнопки мыши с сообщением координат
Сформируем метода OnLButtonDown, OnMouseMove и OnLButtonUp
Откройте файл Ex1View.h.
В разделе public атрибут объявления класса CEx1View объявим две переменный startpt и endpt
CPoint startpt, endpt;
Сохраните Ex1View.h.
Откройте Ex1View.cpp.
В конструкторе инициализируйте координаты значением -1
startpt=-1;
endpt=-1;
Найдите обработчик OnLButtonDown и сохраните значения точки, где указано мышью как на стартовую точку
startpt.x=point.x;
startpt.y=point.y;
Найдите обработчик OnMouseMove и допишем его для рисования линии от предыдущей определенной точки к новой определенной движением мыши
CClientDC dc(this);// создаем контекст устройства
endpt.x = point.x;
endpt.y = point.y;
if (startpt.x != -1 )
{
dc.MoveTo(startpt.x, startpt.y);
dc.LineTo(endpt.x, endpt.y);
startpt.x = endpt.x;
startpt.y = endpt.y;
}
В обработчике OnLButtonUp переустановим начальную точку
startpt = -1;
В меню Build выберите Build Ex2.exe ->.
Выберете Execute Ex1.exe в меню Build, протестируйте работу приложения.
Модифицируйте функцию OnMouseMove, чтобы при перемещении мыши линия рисовалась утолщенной красной линией
// Наш код начинается здесь
//
CClientDC dc(this);// создаем контекст устройства
//создаем новое перо (solid, 10 pixels, red)
CPen NewPen (PS_SOLID, 10, RGB(255, 0, 0));
//одного объявления недостаточно, необходимо включение пера в работу
dc.SelectObject(&NewPen);
endpt.x = point.x;
endpt.y = point.y;
if (startpt.x != -1 )
{
dc.MoveTo(startpt.x, startpt.y);
dc.LineTo(endpt.x, endpt.y);
startpt.x = endpt.x;
startpt.y = endpt.y;
}//Наш код заканчивается здесь
Упражнение 2: Вывод диалогового окна при нажатии правой кнопки мыши с сообщением координат
Воспользуемся предыдущим SDIпроектом приложения и добавляем вывод диалогового окна со строкой сообщения
В меню View выберите ClassWizard, появится страница MFC ClassWizard
Выберем закладку Message Maps, в ней проект Ex2, класс CEx2View и Object ID - CEx2View .
В списке сообщений Messages выберите сообщение мыши WM_RBUTTONDOWN и нажмите Add Function.
Нажмите Ok для закрытия НажмитеOk
В файле CEx1View.cpp будет добавлено в таблицу сообщений
BEGIN_MESSAGE_MAP(CEx1View, CView)
//{{AFX_MSG_MAP(CEx1View)
ON_WM_RBUTTONDOWN()
//}}AFX_MSG_MAP
Добавим в CEx1View в обработчик сообщений OnRButtonDown
char text[45];
::wsprintf(text, "Right mouse down at point x=%d, y=%d",
point.x, point.y);
MessageBox(text);
Постройте и запустите приложение.