Рисование простейших фигур (пример)
Вывести строку:
void CMainWnd::OnPaint()
{ CPaintDC dc(this);
dc.TextOut( X1, Y1,"TextOut Samples");}
Вывести точку, чем выше разрешение экрана, тем меньше точка.
void CMainWnd::OnPaint()
{ CPaintDC dc(this);
dc.SetPixel(500,200,RGB(255,0,0));}
Дуга окружности:
void CMainWnd::OnPaint()
{ CPaintDC dc(this);
dc.Arc(200,200,100,100,400,400,10,10);}
Замкнутая дуга:
void CMainWnd::OnPaint()
{ CPaintDC dc(this);
dc.Chord(250,250,100,100,400,400,10,10);}
Эллипс:
void CMainWnd::OnPaint()
{ CPaintDC dc(this);
dc.Ellipse(450,450,50,150);}
Линия:
void CMainWnd::OnPaint()
{ CPaintDC dc(this);
dc.MoveTo(200,200);
dc.LineTo(100,100);}
Как выполняется рисование и вычерчивание в программе, использующей MFC
Одно из основных сообщений, которое должна уметь обрабатывать любая Windows-программа, — сообщение WM_PAINT. ОС Windows посылает это сообщение окну приложения (точнее — объекту, представляющему окно) при любой; операции, требующей перерисовки изображения в окне. Несколько событий могут стать причиной возникновения необходимости в такой перерисовке.
• Первое из них — запуск программы. В правильно организованной Windows-программе окно приложения получает сообщение WM_PAINT практически немедленно после запуска с тем, чтобы данные, соответствующие исходному состоянию приложения, сразу же были предъявлены пользователю.
• Другое событие, требующее перерисовки окна, а значит, и генерирующее сообщение WM_PAINT, — изменение размеров окна или перекомпоновка окон на экране. В последнем случае окно приложения может стать верхним или быть частично перекрытым другим окном. В любом случае приоткрывается хотя бы часть окна и изображение в нем должно быть перерисовано.
• И наконец, программа может посылать сообщение WM_PAINT сама себе с тем, чтобы удалить старые данные на экране и вывести новые. Такая возможность позволяет приложению всегда держать пользователя в курсе происходящих событий. Например, текстовый процессор может стереть на экране старый текст сразу же после вставки некоторого фрагмента текста из системного буфера.
Когда будем рассматривать карту сообщений, мы познакомимся с соглашением о преобразовании идентификатора сообщения в имя макроса карты сообщений и имя функции. Для сообщения - WM_PAINT , соответствующий макрос будет называться ON_WM_PAINT(), а соответствующая функция— OnPaint(). Это пример того, как MFC берет на себя значительную часть работы по соотнесению сообщений Windows с функциями их обработки.
Текст функции CView::OnPaint() представлен ниже.
void CView::OnPaint()
{// Стандартная последовательность вызовов для прорисовки.
CPaintDC dc(this);
OnPrepareDC(&dc);
OnDraw(&dc);
}
Класс CPaintDC — это специальный класс для управления контекстами отрисовки (paint DCs) — контекстами устройств, которые используются только для реакции на сообщения WM_PAINT. Объект класса CPaintDC делает нечто большее, чем просто создание контекста устройства. Он также вызывает BeginPaint() — функцию Windows API — в конструкторе класса и функцию EndPaint() — в деструкторе. В процессе реакции на сообщение WM_PAINT необходимо вызывать и BeginPaint(), и EndPaint(). Класс CPaintDC избавляет вас от необходимости заботиться о таких мелочах. Конструктор класса CPaintDC требует одного аргумента— указателя на объект, представляющий окно, для которого и создается контекст устройства. Указатель this указывает на текущее окно, т.е. конструктору дается задание создать контекст для текущего окна.
Функция ОnРгерагеDС() является членом класса CView. Она подготавливает контекст устройства для дальнейшего использования.
Функция OnDraw() берет на себя всю работу по обновлению представления документа на экране. В большинстве случаев для каждого приложения нужно разрабатывать собственную функцию OnDraw() и никогда не вносить изменений в предлагаемый MFC текст функции OnPaint().
- 1.Стандартный внешний вид окна приложения Windows.
- 1. Рамка
- 3. Интерфейс Visual Studio. Ресурсы приложения.
- 4. Интерфейс Visual Studio. Окно вывода Output.
- Окно редактирования текстов программ
- 5. Система меню. Меню File, Edit, View.
- Advanced… вывод на экран еще одного меню.
- 6. Система меню. Меню Insert, Project.
- 7. Система меню. Меню Build, Tools. Меню Build
- 8. Мастер создания приложения. Шаг 1,2.
- 9. Мастер создания приложения. Шаг 3,4.
- 10. Мастер создания приложения. Шаг 5,6,7.
- 11. Диалоговые окна и элементы управления
- 12. Формирование нового ресурса диалогового окна.
- 13. Задание идентификаторов диалогового окна.
- 14. Организация вывода диалогового окна на экран.
- 15.Использование элемента управления типа список
- Некоторые методы класса cListBox
- 16. Комбинированные списки (класс cCombobox).
- 17. Использование элементов типа переключатель Статические поля (класс static). Окна редактирования Edit Box. Методы класса cEdit.
- 19. Обработка сообщений. Карты сообщений.
- Некоторые макросы карты сообщений
- 20.Реал-ция обр-ки сообщ-й с пом.ClassWizard. Виды сообщ-й.
- Вкладки диалогового окна ClassWizard.
- Какой класс должен перехватывать сообщение
- Список сообщений
- 21. Команды. Реал-ция обр-ки команд с помощью ClassWizard
- Обновление команд.
- 22. Архитектура «Документ/представление».
- 23. Вывод на экран. Контекст устройства. Классы контекстов устройства в mfc.
- 24.Классы изобразительных средств. Примеры рисования простейших фигур.
- Рисование простейших фигур (пример)
- Изменение размеров и положения окна
- 25. Использование перьев. Работа с кистью.
- Работа с кистью
- 26. Концепция сохран.-восстановл. Объектов. Необходимые действия по сохр.-востан. Объектов класса cDocument. Разбор примера с сериализацией в классе документа.
- Создание класса, обеспечивающего сериализацию данных
- 27. Создание класса, обеспечивающего сохран.-восстан. Объектов. Разбор примера с сериализацией cMessage. Создание класса, обеспечивающего сериализацию данных
- 28. Непосредственное чтение и запись файлов. Класс сFile. Методы сFile. Режимы доступа к файлу.
- 29. Использование на примере основных методов класса cFile (открыть, записать, считать из файла). Использование стандартн. Диалог. Панелей для открытия и записи в файл.
- 30.Панель инструментов и строка состояния. Создание панели инструментов. Добавление и удаление пиктограмм.
- 31.Разработка ф-ций обработки сообщений, связ-х с пиктограммой на панели инструм-в. Класс панели инстр-в.
- 32. Доступ к базам данных в vs. Классы odbc.
- 34. Регистрация бд. Создание заготовки приложения.
- 35.Создание экранной формы для отображ-я содерж-го бд.
- 36.Добавление и удаление записей.
- 37. Сортировка и фильтрация записей.
- 3)Атрибуты данных
- 4) Операции
- 43.Класс cRecordset. Компоненты данных и осн.Методы (открытие набора, получ-е атрибутов результ. Набора IsOpen, IsBof, IsEof, IsDeleted, обновл-е результ. Набора)
- 1)Компоненты данных
- 2)Конструирование
- 44.Класс cRecordset. Компоненты данных и осн.Методы (операции перемещения пo результир-му набору, операции IsFieldDirty, IsFieldNull, Requary, SetFieldDirty, SetFieldNull).
- 1)Компоненты данных
- 45. Класс cRecordset. Переопределяемые методы (DoFieldExchange, GetDefoltSql, GetDefoltConnect).
- 46.Класс cRecordView.
- 1)Создание объекта
- 2)Атрибуты данных
- 47. Основные технологии com. Автоматизация. Перманентность. Моникеры.
- 48. Единообразная передача данных и объекты с подключением.
- 49. Технология ado. Объектная модель, наборы ado.
- 50. Применение ado Data Control и DataGrid Control.
- 2.2. Методические указания
- 51. Удаление, добавление и редактирование записей в технологии ado
- 52.Настройка Эл-тов упр-ния ado Data Control и DataGrid Control из кода приложения
- 53. Возможности AppWizard по созданию приложений, поддерживающих технологию ActiveX.
- 54.Библиотеки динамической компоновки dll
- 55.Создание и использование 32-битовых динамически связываемых библиотек
- 56. Создание рабочего потока. Управление приоритетами потоков
- 57. Синхронизация потоков. Объекты синхронизации и классы mfc.
- Объекты синхронизации и классы mfc.
- 58.Отладка программ в vs. Точка останова. Установка точек останова. Команды и окна отладки.
- Терминология отладки
- Команды и окна отладки
- Команды меню
- Установка точек останова
- Другие окна для отладки
- Окно Memory
- Применение утилиты mfc Tracer
- 59. Отладка программ в vs. Анализ значений переменных. Окно CallStact.