|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Пометка команд менюКак вы знаете, перед отображением меню программа вызывает для каждой команды специальный метод обновления пользовательского интерфейса, в котором можно установить пометку для команды, соответствующей активному режиму рисования. При помощи ClassWizard свяжите с каждой командой меню метод обновления (для этого следует связать обработчик команды с сообщением UPDATE_COMAND_UI). В нем можно пометить команду меню (или снять пометку) в зависимости от значения флага команды:
void CPainterView::OnUpdateToolsDrawfreehand(CCmdUI* pCmdUI) { pCmdUI->SetCheck(bDrawFlag); } void CPainterView::OnUpdateToolsEllipse(CCmdUI* pCmdUI) { pCmdUI->SetCheck(bEllipseFlag); } void CPainterView::OnUpdateToolsFillfigure(CCmdUI* pCmdUI) { pCmdUI->SetCheck(bFillFlag); } void CPainterView::OnUpdateToolsLine(CCmdUI* pCmdUI) { pCmdUI->SetCheck(bLineFlag); } void CPainterView::OnUpdateToolsRectangle(CCmdUI* pCmdUI) { pCmdUI->SetCheck(bRectangleFlag); }
Помимо пометки команд активного режима в меню Tools, эти методы также заставляют выглядеть соответствующую кнопку на панели инструментов «нажатой», чтобы пользователь мог в любой момент определить активный режим рисования. Фактически вся работа пользовательского интерфейса сводится к правильной установке флагов. Когда дело доходит до рисования, установленный флаг опре- деляет фигуру, которую следует нарисовать. От пользовательского интерфейса мы переходим к работе с мышью.
Обработка сообщений о нажатии кнопки мыши Если пользователь нажимает кнопку мыши в клиентской области нашей программы, значит, он готов рисовать. Нажатие кнопки мыши задает начальную точку фигуры. При помощи ClassWizard добавьте в программу метод OnLButtonDown() и включите в него код для сохранения начальной точки: Void CPainterView::OnLButtonDown(UINT nFlags, CPoint point) { Anchor.x = point.x; Anchor.y = point.y; CView::OnLButtonDown(nFlags, point); }
Мы знаем положение начальной точки и тип фигуры, теперь нужно нарисовать на экране изображение.
Рисование линий Если пользователь нажимает кнопку мыши и задает положение начальной точки, а затем перемещает мышь и отпускает кнопку, задавая положение конечной точки, наша программа должна нарисовать нужную фигуру и растянуть ее от начальной до конечной точки. Начнем с рисования линий — в этом случае должен быть установлен флаг. Линия рисуется при отпускании кнопки мыши, поэтому добавьте в программу метод OnLButtonUp():
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |