Хід виконання роботи
Заготівка додатку Перш за все необхідно розробити додаток для роботи з єдиним документом, назвемо його TestPaint. В процесі створення додатку за допомогою майстра створення додатків не міняємо ніяких опцій, окрім етапу вибору опцій зовнішнього вигляду документа, де скидаємо всі прапорці (рис. 3.1 та Рисунок 3.1)
Рисунок 3.1 – Етап вибору опцій зовнішнього вигляду документа у Microsoft Visual Studio 2005 Для з'ясування механізму виводу на екран дана програма повинна буде по натисненню лівою кнопкою миші на робочій області міняти вміст вікна виводу. Спершу необхідно включити в клас уявлення новий член-змінну, який буде берегти інформацію про те, який вид картинки потрібно вивести на екран, і змінювати її у відповідь на кожне клацання мишею. За допомогою оглядача файлів, який знаходиться в робочому вікні проекту справа вибираємо теку Header Files і в ній вибираємо і відкриваємо файл TestPaintView.h. Після коментарія //Attribute додаємо в тіло класу наступні строчки: protected: enum {Fonts, Pens} m_Display; Переходимо в оглядач класів, розвертаємо вміст класу CTestPaintView і двічі клацаємо на конструкторі класу CTestPaintView(). Додаємо в тіло конструктора наступний рядок: m_Display = Fonts; Таким чином спочатку, при запуску програми, селектор картинок ініціалізується на відображення набору шрифтів. Тепер переходимо до доповнення функції OnDraw(CDC* pDC), в якій буде використовуватися наш селектор картинок. Двічі клацаємо на ім'я цієї функції і вставляємо в неї текст, який буде відповідати за перемикання між зображеннями (лістинг 3.1).
void CTestPaintView::OnDraw(CDC* pDC) { CTestPaintDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); switch (m_Display) { case Fonts: ShowFonts(pDC); break; case Pens: ShowPens(pDC); break; }} Лістинг 3.1 – Модіфікована функція зміни зображення
Зараз необхідно додати в клас CTestPaintView функції ShowFonts(pDC) і ShowPens(pDC). Кожна з цих функцій використовує той же покажчик контексту, який був переданий функції OnDraw(CDC* pDC). Включити ці функції в клас можна таким чином: а) клацніть правою кнопкою миші на назві класу CTestPaintView і в меню вибрати пункт додавання функції-члена Add Member Function; б) в полі Fuction Type введіть тип, що повертається функцією - значення void; Оголошення функції Function Declaration повинне мати вигляд ShowFonts(CDC* pDC); змініть характер доступу на захищений – виберіть перемикач Protected; клацніть на кнопку [OK]; 3. повторіть вище перелічені дії, тільки замість ShowFonts(CDC* pDC) введіть в полі оголошення функції значення ShowPens(CDC* pDC). Тепер необхідно відловити клацання лівої кнопки миші і написати текст обробки повідомлення, в якій повинна відбутися зміна змінної m_Display. Клацніть правою кнопкою миші на назві класу CTestPaintView і виберіть пункт додавання обробника повідомлень Add>New>Message Handler, тепер вибираємо і двічі клацаємо на обробнику WM_LBUTTONDOWN в списку обробників нових повідомлень і подій Windows New Windows Message and Event Handlers (рис. 3.3), клацаємо на кнопці [Edit Existing] і переходимо до редагування створеної функції обробки повідомлень. В створену функцію обробки повідомлень необхідно вставити текст, представлений в лістингу 3.2. Задача даної функції привласнити нове значення змінної m_Display і викликати функцію Invalidate(). Виклик функції Invalidate() говорить ОС, що весь вміст вікна потрібно перемальовувати. Це примушує Windows сформувати повідомлення WM_PAINT, яке, у свою чергу, викликає функцію OnDraw(CDC* pDC), яка залежно від значення змінної m_Display викличе відповідну функцію промальовування зображення.
Рисунок 3.2 – Додавання функції обробки повідомлення
void CTestPaintView::OnLButtonDown(UINT nFlags, CPoint point) { if (m_Display == Fonts) m_Display = Pens; else m_Display = Fonts;
Invalidate();
CView::OnLButtonDown(nFlags, point); } Лістинг 3.2 – Текст функції обробки повідомлення
Читайте также: IV. Методичні рекомендації щодо виконання практичної ЧАСТИНИ КПІЗ Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|