Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Хід виконання роботи




Заготівка додатку

Перш за все необхідно розробити додаток для роботи з єдиним документом, назвемо його 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 – Текст функції обробки повідомлення

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...