- •Затверджую
- •Індивідуальне завдання
- •Анотація
- •Аналіз індивідуального завдання
- •Загальна структура проекту
- •Розробка меню програми
- •Панель інструментів та рядок стану
- •Створення діалогових вікон
- •Створення та підключення бібліотеки dll
- •Реалізація математичної функції мовою assembler
- •Керівництво системного програміста
- •Керівництво оператора
- •Висновки
- •Література
- •Додатки
Аналіз індивідуального завдання
Дана програма повинна складатись с двох файлів: головного завантажувального файлу типу *.exe та файлу динамічної бібліотеки *.dll. який має знаходитись в тому ж самому каталозі, що й програма. Програма повинна видавати інформацію про розробника, забезпечувати введення в діалоговому режимі вхідних даних з клавіатури, виведення результату роботи програми в графічному та текстовому вигляді, виконувати стандартні операції з файлами: Rename, Open та Save. DLL файл повинен містити функцію, написану мовою Assembler. Динамічна бібліотека повинна отримувати з основної програми необхідні їй дані, а саме коефіцієнти a та x, виконувати необхідні обчислення та передавати результат назад у програму типу *.exe.
Для того, щоб можна було керувати процесами, що виконує програма, всі необхідні операції мають бути відображені в головному меню, панелі інструментів та контекстному меню.
Введення самих даних повинно відбуватись у діалоговому вікні, при чому a та x вводяться у поля ComboBox. При натисненні кнопки Calc має відбутись обмін даними с динамічною бібліотекою та обрахунок обчислення. Результат виводиться у діалогове вікно. На той випадок, коли ніяке значення введено не було, повинно бути виведено стандартний результат. Стандартна операція Rename повинна перейменовувати вказаний файл, Open – відкривати текстовий файл у новому вікні, а Save зберігати результат обчислень в текстовий файл, About – відкривати текстовий файл у новому вікні, в якому відображається інформація про розробника.
Загальна структура проекту
Курсова робота складається з двох проектів: головний проект програми та проект динамічної бібліотеки. Проект динамічної бібліотеки складається з безпосередньо самого файлу з текстом програми – KP_SPZ_v11-2015_asm.cpp, файлів проекту, що автоматично створюються середовищем та файлу KP_SPZ_v11-2015_asm.def в якому вказується ім'я бібліотеки що створюється, та ім'я функції що експортується, яка прописується відповідно синтаксису calc @1.
Головний проект використовується для створення *.exe файлу програми, яка використовує створену DLL бібліотеку. Цей проект включає файл з текстом самої програми – TOOLBAR6.CPP, файли проекту, що автоматично створюються середовищем, заголовочний файл resource.h, файл ресурсів TOOLBAR6.rc, а також файл типу *.bmp, який містить рисунок панелі інструментів. Загальна структура проекту в Visual Studio 2008 зображено на рисунку 1.
Рисунок 1 – Загальна структура програми
Основна програма містить два класи, які визначаються користувачем. Перший клас СMyApp, призначений для створення глобального об’єкта класу прикладних програм. Базовий клас CWinApp має всього два методи: конструктор і функцію ініціалізації InitInstance().
З самого початку слід підключити до програми бібліотеку MFC:
#include <afxwin.h>;
Далі створюється клас додатку:
class CMyApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
Потім йде ініціалізація додатку:
BOOL CMyApp::InitInstance()
{
…
};
При чому в цій MFC-функції процес починається зі створення об’єкту фрейму вікна:
CMyFrameWin *pMainWnd=new CMyFrameWin;
Далі дане вікно встановлюється головним вікном даної програми:
m_pMainWnd=pMainWnd;
Після чого показуємо його на екран, це робиться за допомогою функції:
m_pMainWnd->ShowWindow(m_nCmdShow);
Далі потрібно викликати функцію, що буде посилати вікну повідомлення про необхідність його оновлення:
m_pMainWnd->UpdateWindow();
Потім слід створити об’єкт нашого додатку:
CMyApp app;
Після створення цього додатку програма починає виконуватись.
В якості префікса, який позначає ім’я класу, використовується прописна буква С від слова class, за нею йде ім’я класу.
Для членів класу прийнятий такий спосіб утворення імен: обов’язковий префікс m_ (від слів class member), потім йде префікс, який характеризує тип даних, а потім власне ім’я змінної, наприклад m_pMainWnd, де р – префікс вказівника. Для найменування змінних, які не є членами класу, префікс m_ не використовується.
Кожна MFC-програма буде практично завжди містити хоча б один клас, похідний від бібліотечного віконного класу [2].
Саме вікно створюється в конструкторі класу CMyFrameWin за допомогою функції Create(), що містить початкові параметри вікна:
Create(NULL,"Курсова робота, ст. гр. 3К-14 Семенюк М.В. ",
WS_OVERLAPPEDWINDOW,rectDefault,NULL,
MAKEINTRESOURCE(IDR_MAINFRAME));
В програмі також вказані наступні стрічки:
BEGIN_MESSAGE_MAP(CMyFrameWin, CFrameWnd)
…
END_MESSAGE_MAP();
Ці стрічки створюють чергу повідомлень головного вікна, визначають таблицю відкликів головного вікна додатку на повідомлення.
