АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Пометка команд меню

Читайте также:
  1. Team kata male 8-13 years (Командне ката хлопці 8-13 років)
  2. Алгоритми виконання команд
  3. В командном спарринге могут принимать участие только команды, участвовавшие в командных туль.
  4. Вбудовані команди
  5. Внутренние команды MS-DOS размещены в файле
  6. Внутрішні команди MS-DOS
  7. Вывод сооб-я команды в конец файла с сохр-ем ранее записан инф-и (дозапись) или созд-ем нов файла осущ-ся
  8. Д). Команды удаления каталога RD и DELTREE
  9. Дайте себе команду достичь осознанности в сновидении
  10. Декодирование команд
  11. Для зрителей вход платный – 200 руб. Вход бесплатный для родителей участников и тренеров спортивных команд.
  12. Документальное оформление командировки

Как вы знаете, перед отображением меню программа вызывает для каждой команды специальный метод обновления пользовательского интерфейса, в котором можно установить пометку для команды, соответствующей активному режиму рисования. При помощи 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():

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)