Головна

Бібліотека класів MFC

  1.  IDL-опису бібліотека типу
  2.  Олександрія та її бібліотека
  3.  Анкета для учнів 8-11 класів
  4.  бібліотека
  5.  бібліотека КОМПЕЛ
  6.  бібліотека КОМПЕЛ

Бібліотека класів Microsoft Foundation Classes (MFC) містить більше 200 вже написаних класів для Windows - програмування.

Функції класів MFC всередині себе викликають функції бібліотеки Windows Win32 API (1000 функцій), тобто можна сказати, що в MFC включений Win32 API. Перевага MFC в порівнянні з Win32 API полягають у спрощенні і прискорення розробки Windows-додатків.

Бібліотека класів MFC має наступні переваги:

- Використовує зручно всередині себе бібліотеку Win 32 API;

- Спрощує і прискорює розробку Windows-додатків;

- Створює компактність програмного коду;

- Скорочує час розробки графічного інтерфейсу користувача;

- Значно спрощує застосування прогресивних технологій програмування: технології ActiveX, підтримку баз даних з технологіями ODBC і DAO; технологій для Internet.

бібліотека MFC - Ієрархічна сукупність класів C ++, що реалізує методи інкапсуляції, успадкування та поліморфізму.

Класи MFC можна розділити на кілька категорій:

- Структура програми: класи додатки і підтримки потоків, маршрутизації команд, документів;

- Призначений для користувача інтерфейс: класи фреймів вікон, блоків діалогу і елементів управління;

- Висновок даних: класи контексту пристрою, графічних об'єктів;

- Набори даних: класи масивів, списків;

- Прості типи даних: класи точки, прямокутника, рядки, часу і дати;

- Технологія ActiveX: контейнерні і серверні класи для підтримки операцій зі складеними документами;

- Файли і бази даних: класи файлів введення-виведення, для доступу до технологій ODBC і DAO;

- Internet і мережі: класи технологій WinInet API, Internet Server API, Windows Socket.

Бібліотека MFC для ідентифікації змінних використовують угоду, зване Угорської нотацією (автор - угорський програміст Чарлз Сімоні). Ім'я змінної складається з префікса (букви, що позначає тип змінної) і описової частини з одного або декількох слів, причому кожне слово починається з великої літери. Наприклад, n, i - ціле число (тип int), l - довгий тип (long), d - число з подвійною точністю (double), c - символьний тип (char), s - строкова змінна.

Розглянемо структуру програми (тип проекту Visual C ++ Project MFC, шаблон MFC Application).

Базова концепція MFC і AppWizard - це поняття "Документ - Вистава". Прийнято припущення, що будь-який додаток щось має, що необхідно зберігати на диску. Цю сукупність інформації позначили як документ, А перегляд інформації позначили як подання.

Після виконання 6 етапів налаштування параметрів проекту будуть створені такі головні класи та файли програми, представлені в табл. 2.1.

Табл. 2.1.

 клас  ім'я класу  базовий клас  файли
 документ  CLab1_2Doc  CDocument  Lab1_2Doc.hLab1_2Doc.cpp
 подання  CLab1_2View  CView  Lab1_2View.hLab1_2View.cpp
 головне вікно  CMainFrame  CFrameWnd  MainFrame.hMainFrame.cpp
 додаток  CLab1_2App  CWinApp  Lab1_2.hLab1_2.cpp

Appwizard створив 4 основні класи та на кожен клас - файл інтерфейсу і файл реалізації. Клас Документ призначений для зберігання даних, записи і читання їх з диска. Клас Подання (або Вид) служить для відображення даних, що вводяться користувачем, управляє вікном уявлення (обробкою даних). Клас Головне вікно управляє головним вікном програми (вікном-рамкою) і містить рамку вікна, рядки заголовка, меню (за винятком клієнтської області). Клас Додаток призначений для управління програмою в цілому: запуску програми, ініціалізації, створення головного вікна, передачі повідомлень Windows.

5.4. Повідомлення - реакція на події

Повідомлення - Це засіб, за допомогою якого операційна система повідомляє додатком про подію, що відбулася. Повідомлення WINDOWSуправляют всім процесом функціонування додатків.

Вікно, а кожен інформаційний елемент на екрані є вікно, також може посилати повідомлення іншого вікна.

Повідомлення - Це вхід в додаток, є подія, на яке, повинно реагувати додаток. Кожне повідомлення зв'язується з конкретним вікном, з кожним з яких, в свою чергу, пов'язана власна віконна функція. Ця функція викликається для обробки повідомлення. Механізм повідомлень в WINDOWS реалізується за допомогою черги повідомлень.

Для ідентифікації подій WINDOWS використовує цілі числа, але в тексті програми використовуються текстові ідентифікатори для зручності програмування та читабельності програми. Велика кількість директив пов'язують символьні ідентифікатори і відповідні числа - # define <симв. ідент.> <код>, Наприклад:

# Define WM_PAINT 0X000F # define WM_COMMAND 0X0111

Існують майже 900 різних повідомлень.

Префікси в імені повідомлення вказують тип вікна, для якого призначене повідомлення або яке його породило:

BM_, BN_ - кнопка (button), EM_, EN_ - текстове поле (edit box), WM_ - вікно як таке (generic window).

Приклади повідомлень з префіксом WM_:

WM_CHAR - натискання видимих ??символів,

WM_KEYDOWN - натискання невидимих ??символів (>, <, функціональні клавіші F1 ... F12).

Всі повідомлення в MFC розділені на основні категорії:

1. Стандартні повідомлення WINDOWS - це повідомлення з префіксом WM_, За винятком WM_COMAND, інформують додаток про створення або знищення вікна, про повідомлення клавіатури і миші, призначені для обробки вікнами, можуть містити параметри, які визначають алгоритм обробки повідомлення.

2. Командні повідомлення (команди) - це повідомлення WM_COMMAND, відомі як команди, від об'єктів інтерфейсу користувача, які включають меню, кнопки панелей інструментів, клавіші-акселератори.

3. Командні повідомлення поновлення користувальницького інтерфейсу - це повідомлення, які повідомляють додатком про зміну стану опцій меню, кнопок панелі інструментів, клавіш-акселераторів, наприклад, зробити опції меню недоступними або поміченими.

4. Извещения елементів управління - це сповіщення від елементів управління та інших дочірніх вікон, що направляються свого батьківського вікна.

Серцем будь-якої програми Windows є цикл обробки повідомлень, що знаходиться у функції WinMain ().

У бібліотеці MFC використаний наступний підхід: для обробки кожного окремого повідомлення використовується спеціальна функція-обробник. Всі функції-обробники є елементами-функціями будь-якого класу.

Але яким чином зіставляються повідомлення і відповідна йому функція-обробник? У традиційних Windows- програмах для обробки повідомлень використовується в функції WndProc () оператор switch з численними гілками, що вкрай неефективно. В Visual C ++ реалізація взаємозв'язку заснована на понятті карти повідомлення. Кожен клас, який отримує повідомлення, повинен мати свою карту повідомлень.

Карта повідомлень складається з двох частин: одна в файлі заголовків, інша - в файлі кодів.

У першій частині карти оголошується прототип функції-обробника, наприклад, для повідомлення WM_CHAR - функція OnChar ().

Друга частина карти знаходиться в файлі кодів. Структура карти повідомлень являє собою набір макросів, званих компонентами карти повідомлень. Для кожного стандартного повідомлення Windows (1-а категорія повідомлень) визначено свій макрос у формі: ON_ WM_XXX, де XXX -ім'я повідомлення, наприклад: ON_WM_CHAR.

Імена функцій - обробників визначаються при розпакуванні параметрів кожного повідомлення Windows на основі наступного простого угоди. Ім'я функції-обробника складається з префікса On і імені відповідного повідомлення (без WM).

Наприклад, afx_msg void OnChar (...) - це оброблювач для повідомлення WM_CHAR (натиснута клавіша видимого символу). За формування параметрів функції-обробника відповідає відповідний макрос.

Для командних повідомлень (2-а категорія повідомлень) визначено макрос у формі:

ON_COMMAND (Id, Fn), де Id - ідентифікатор командного повідомлення, Fn-функція-обробник. приклад:

ON_COMMAND (ID_FILE_PRINT, CView :: OnFilePrint)

Для командних повідомлень поновлення користувальницького інтерфейсу (3-ю категорію повідомлень) визначено макрос:

ON_UPDATE_COMMAND_UI (Id, Fn)

Для обробки повідомлень від елементів управління (4-а категорія повідомлень) визначено макрос у формі:

ON_XXX (...), де XXX - назва сповіщення.

Наприклад, для обробки повідомлень, введених програмістом, застосовуються макроси ON_CONTROL і ON_ NOTIFY:

ON_CONTROL (cod, id, Fn)

, Де cod - код сповіщення від елемента управління, id - ідентифікатор повідомлення, Fn - функція.

ON_NOTIFY - обробка сповіщення від елемента управління, що містить додаткові відомості.

ON_MESSAGE - обробка повідомлень, створених програмістом.

Існує понад 100 макросів, по одному на кожне повідомлення, які направляють повідомлення функціям-обробникам.

 




 перевантаження операцій |  Перетворення типів, що визначаються класом |  перевантаження функцій |  Віртуальні елементи-функції |  параметричний поліморфізм |  Постановка завдання та визначення специфікацій |  Складання початкової ієрархії і структури класів |  Реорганізація ієрархії і структури класів |  Файл інтерфейсу базового класу |  Роботу в Windows |

© um.co.ua - учбові матеріали та реферати