Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SDI.doc
Скачиваний:
23
Добавлен:
01.05.2014
Размер:
120.32 Кб
Скачать

Сформируем метода 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);

Постройте и запустите приложение.

Соседние файлы в предмете Компьютерная Графика