Аналоги і їх функціональні властивості 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Аналоги і їх функціональні властивості



ЗМІСТ

ВСТУП.. 5

1 АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ.. 6

1.1 Аналіз предметної області 6

1.2 Аналоги і їх функціональні властивості 7

1.3 Обґрунтування вибору мови програмування. 7

1.4 Висновки…………………………………………………………………..9

2 РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ.. 10

2.1 Обґрунтування вибору інтерфейсу. 10

2.2 Розробка інтерфейсу…………………………………………………….11

2.3 Розробка дизайну……………………………………………………….11

2.4 Висновки…………………………………………………………………13

3 РОЗРОБКА багатовіконного додатку.. 14

3.1 Розробка алгоритму функціонування програми. 14

3.2 Вибір середовища програмування. 15

3.3 Розробка багатовіконного графічного додатку. 16

3.4 Інструкція оператора. 18

3.5 Висновки. 19

4 ТЕСТУВАННЯ ПРОГРАМИ.. 20

4.1 Методики, що використані для тестування програми. 20

4.2 Інструкція для тестування програми. 21

4.3 Висновки. 22

ВИСНОВКИ…………………………………………………………………….23

ПЕРЕЛІК ПОСИЛАНЬ. 24

ДОДАТОК А. Текст програми……………………………………………….25

ВСТУП

 

Дана курсова робота присвячується питанням роботи з функціями Windows Application Programming Interface (API).

Windows — загальне найменування для цілого набору базових функцій інтерфейсів програмування додатків операційних систем сімейств Windows корпорації Майкрософт.

Windows API був спочатку спроектований для використання в програмах, написаних мовою C (або C++). Робота через Windows API — це найбільш близький до системи спосіб взаємодії з нею прикладних програм. Існують різні версії функцій Windows API основні з них наведенні нижче:

- Win16 — перша версія Windows API для 16-розрядних версій Windows. Спочатку називався просто Windows API, потім почав називатися Win16 для розрізнення із Win32.

- Win32s — підмножина Win32, що встановлюється на сімейство 16-розрядних систем Windows.

- Win32 — 32-розрядний API для сучасних версій Windows. Найпопулярніша нині версія.

- win64 — 64-розрядна версія Win32, що містить додаткові функції для використання на 64-розрядних комп'ютерах. Win64 API можна знайти тільки в 64-розрядних версіях Windows.

Метою роботи є розробка програми графічного багатовіконного додатку з використанням Win32 API.

Для досягнення поставленої мети в роботі вирішуються такі завдання:

- аналіз сучасного стану питання та обґрунтування завдання на роботу;

- розробка інтерфейсу програми;

- розробка багатовіконного додатку;

- тестування програми

 

АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ

Аналіз предметної області

 

Windows Api (application programming interfaces) — загальне найменування для цілого набору базових функцій інтерфейсів програмування застосунків операційних систем сімейств Windows корпорації Майкрософт. Є найпрямішим способом взаємодії з Windows. Для створення програм, що використовують Windows API, Майкрософт випускає SDK, який називається Platform SDK і містить документацію, набір бібліотек, утиліт і інших інструментальних засобів[1-2].

Windows API був спочатку спроектований для використання в програмах, написаних на мові C (або C++). Робота через Windows API — це найближчий до системи спосіб взаємодії з нею прикладних програм. Нижчий рівень доступу, необхідніший тільки для драйверів-пристроїв, в поточних версіях Windows надається через Windows Driver Model.

 

Версії Win:

Win16 — перша версія WindowsAPI для 16-розрядних версій Windows.Спочатку називався просто WindowsAPI, потім почав називатися Win16 для розрізнення із Win32.

Win32s — підмножина Win32, що встановлюється на сімейство 16-розрядних систем.

Win32 — 32-розрядний API для сучасних версій Windows. Найпопулярніша нині версія. Базові функції цього API реалізовані в DLL kernel32.dll і advapi32.dll; базові модулі GUI — в user32.dll і gdi32.dll. Win32 з'явився разом з WindowsNT і потім був перенесений в системи серії Windows 9x.

win64 — 64-розрядна версія Win32, що містить додаткові функції для використання на 64-розрядних комп'ютерах.Win64 API можна знайти тільки в 64-розрядних версіях WindowsXP і WindowsServer 2003.

 

Аналоги і їх функціональні властивості

Вікна є основним засобом графічної прикладної програми, що базується на Win32, які взаємодіють з користувачем і виконують завдання, тому одним з перших завдань графічного додатку, що базується на Win32, є створення вікна. Цей огляд описує елементи прикладного програмного інтерфейсу (API) Microsoft Win32, який прикладні програми використовують, щоб створювати і використовувати вікна,управляти зв'язками між ними а також розміром, переміщенням і відображенням вікна на екрані дисплея[2].

Коли запускається Windows, він автоматично створює вікно робочого столу (desktop window). Вікно робочого столу - визначуване системою вікно, яке забарвлює фон екрану і служить ядром для всіх вікон, що відображаються усіма прикладними програмами.

Вікно Робочого столу використовує точковий малюнок, щоб промальовувати фон екрану. Візерунок, створюваний точковим малюнком називається шпалерами робочого столу (desktop wallpaper). За замовчуванням, вікно робочого столу використовує точковий малюнок з файлу. BMP, який визначений в системному реєстрі, як шпалери робочого столу [3].

Функція Get Desktop Window повертає дескриптор вікна робочого столу.

Прикладна програма конфігурації системи, типу аплета Панель Управління (Control Panel), змінює настільні шпалери робочого столу, використовуючи функцію System Parameters Info з параметром wAction, встановленим в SPI_SETDESKWALLPAPER і параметром lpvParam, визначальним ім'я файлу растрової картинки.

Висновки

Враховуючи те, що перелічені вище властивості використовуватимуться у програмі, для програмування було обрано мову С++ та візуальне середовище програмування MS Visual Studio.


РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ

 

Обґрунтування вибору інтерфейсу

 

Інтерфейс – зовнішня оболонка додатку разом з програмами управління доступом та іншими прихованими від користувача механізмами управління, яка дає можливість працювати з документами, даними та іншою інформацією, що зберігається в комп'ютері або за його межами[7]. Головна мета будь-якої програми – забезпечити максимальну зручність і ефективність роботи з інформацією: документами, базами даних, графікою та зображеннями. Добре розроблений інтерфейс гарантує зручність роботи з додатком.

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

- Командний інтерфейс

У даному виді інтерфейсу людина подає "команди" комп'ютеру, а комп'ютер їх виконує і видає результат людині. Командний інтерфейс реалізований у вигляді пакетної технології та технології командного рядка.

- WIMP-інтерфейс

Діалог з користувачем ведеться за допомогою графічних елементів: меню, вікон, тощо.

- SILK-інтерфейс

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

З огляду на перелічені особливості, для створення навігатора системного реєстру було обрано WIMP-інтерфейс. Розглянемо його переваги:

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

- всі дії з об'єктами здійснюються за допомогою меню та кнопок, прапорців, перемикачів, тощо;

 

Розробка інтерфейсу

 

Головне вікно програми містить поля введення значень параметрів пера, поле для створення зображень, кнопку очищення даного поля, компонентів для вибору кольору після натискання на них.

Головне вікно складається з наступних елементів:

- Компонент Form1 – являє собою головну форму програми, на якій розміщені всі інші компоненти.

- Компонент Panel1 – елемент, в якому можливе малювання зображення за допомогою маніпулятора курсора миші.

- Кнопка Button1 – забезпечує очищення поля в якому відбувається малювання;

- Компоненти Combo Box– забезпечують вибір необхідного елемента для малювання;

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

- Компонент List – містить список усіх видів заливок.

- Компонент Radio Button – стандартний перемикач для вибору типу лінії.

 

Розробка дизайну

 

Програма має простий та інтуїтивно-зрозумілий інтерфейс. Основну частину головного вікна займає панель із елементом для малювання. Ліву частину вікна займають компоненти управління олівцем. Таким чином, необхідні елементи згруповані для збереження концентрації уваги користувача та зручності представлення даних.

Інтерфейс виконаний у спокійних стандартних тонах. Програма також має власну іконку та заголовок.

 

 

Рисунок 2.1– Інтерфейс програми

 

 

Рисунок 2.2 - Вікно вибору кольорів

 

Вікно вибору кольорів представляє собою стандартне вікно Windows для вибору кольорів (також відоме як Діалог). При необхідності можна відкрити додаткове вікно, з повною гамою кольорів.

 

Висновки

В результаті аналізу різних типів інтерфейсів користувача обрано віконний графічний інтерфейс для додатку, що розробляється. Оскільки цей тип інтерфейсу є найбільш придатним для непідготовлених користувачів. З використанням проекту Windows Form Application Visual Studio створений інтерфейс користувача даного додатку.

 


 

Інструкція оператора

 

Для початку роботи програми необхідно запустити виконуваний файл PaintORama.exe, після чого на екрані з’явиться головне вікно додатку (Рисунок 3.2).

 

Рисунок 3.2 – Головне вікно програми

 

Подальшу роботу з додатком можна поділити на такі кроки:

Створення нового зображення в полі для малювання. Для цього необхідно помістити курсор миші в поле для малювання, і зажавши ліву кнопку миші водити по області малювання.

Виконання процесу створення зображення потребує вибору кольорів пензлів, для чого необхідно відкрити додаткове вікно, з політрою кольорів, і вибрати необхідний. Після даної операції колір пензля змінюється на вибраний.

Вікно вибору кольору можна розширити, при відсутності необхідного кольору у вікні по замовчуванні (Рисунок 3.3).

 

 

Рисунок 3.3 - Вибір кольору

 

При потребі очистити поле, можна натиснути відповідну кнопку на формі “Очистити” і поле буде очищене.

Після виконання процесу створення зображення, необхідно закінчити роботу програми. Для цього можна скористатися стандартною кнопкою закриття вікна, яка знаходиться у верхньому правому куті форми.

Висновки

 

При розробці даного програмного продукту було побудовано блок-схему його функціонування. Розглянуто проблему вибору середовища програмування

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


ТЕСТУВАННЯ ПРОГРАМИ

Висновки

 

Під час тестування програми не було виявлено помилок. В результаті виконання тестування ми отримали зображення на екрані за допомогою інструментів Win32 API.


 

ВИСНОВКИ

 

Win32 API - це множина підпрограм-функцій, на яких побудована операційна система WINDOWS, яка використовує 32х-бітну адресацію, починаючи з WINDOWS 95 і закінчуючи WINDOWS 8. Розробники WINDOWS зробили багато зусиль щоб стандартизувати як назви функцій, так і їх параметри. Тому використовувати їх не так важко, якщо засвоїти деякі загальні концепції.

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

У роботі розроблено програму яка демонструє застосування функцій Win32 API при створенні багатовіконних графічних додатків. Крім того, дана програма в нових вікнах реалізує функції по створенню і редагуванню зображень.

У процесі розробки програми було з’ясовано, що суть функцій API зрозуміти значно легше, якщо знати з яких файлів вони викликаються і на які групи ці функції поділяються. C++ - це якраз той зручний і простий засіб, який дозволяє звертатись безпосередньо до будь-якої функції API, що знаходиться у DLL-файлі.


ПЕРЕЛІК ПОСИЛАНЬ

 

1. Майданюк В.П. Інтерфейс "Користувач-комп'ютер":Навчальний посібник / В.П. Майданюк, А.М. Пєтух - Вінниця: ВДТУ, 1999. - 66 с.

2. Черносвитов А. Visual C++ 6 и MFC. Пер. с англ./А.Черносвистов – СПб: Питер, 2002.

3. Харт М. Системноепрограммирование в среде Windows./ М. Харт. – М.: Вільямс, 2005.

4. Шеховцов В.А. Операційні системи. / В. А. Шеховцов – К.: BHV, 2005. – 576 с.: ил.

5. Microsoft Corporation. Разработка приложений на Microsoft Visual C++ 6.0. Учебный курс: Официальноепособие Microsoft для самостоятельнойподготовки/Пер. с англ. — М.: Издательско-торговыйдом «РусскаяРедакция», 2000. — 576 с.

6. Фейсон Т. Объектно-ориентированноепрограммирование на Borland C++ 4.5. / Т. Фейсон, Л. Джейді – К.: Діалектика, 1996.

7. Троелсен. Э. С# и платформа.NET. Библиотекапрограммиста. / Э.Троелсен — СПб.: Питер, 2004. —796 с.

8. Нейгел К. и др. C# 2005 и платформа.NET 3.0 для профессионалов. / К. Нейген, И. Д. Вильямс -: Пер. с англ. – М.: ООО «И. Д. Вильямс», 2008. – 1376 с.

9. MSDN LibraryforVisualStudio 2012.


ДОДАТОК А

Текст програми

 

// PaintORama.h: main header file for the PROJECT_NAME application

//

#pragma once

#ifndef __AFXWIN_H__

#error "include 'stdafx.h' before including this file for PCH"

#endif

#include "resource.h" // main symbols

// CPaintORamaApp:

// See PaintORama.cpp for the implementation of this class

//

classCPaintORamaApp: public CWinApp

{

public:

CPaintORamaApp();

// Overrides

public:

virtual BOOL InitInstance();

// Implementation

DECLARE_MESSAGE_MAP()

};

externCPaintORamaApptheApp;

// PaintORamaDlg.h: header file

//

#pragma once

// CPaintORamaDlg dialog

classCPaintORamaDlg: public CDialogEx

{

// Construction

public:

CPaintORamaDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data

enum { IDD = IDD_PAINTORAMA_DIALOG };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

 

// Implementation

protected:

HICON m_hIcon;

// Generated message map functions

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

private:

CRectm_Canvas;

CRectm_PenColorSwatch;

CPointm_LineStart;

CPointm_LineEnd;

boolm_IsDrawing;

public:

afx_msg void OnBnClickedClearbtn();

afx_msg void OnLButtonDown(UINT nFlags, CPoint point);

afx_msg void OnLButtonUp(UINT nFlags, CPoint point);

afx_msg void OnMouseMove(UINT nFlags, CPoint point);

intm_PenWidth;

private:

CPenm_Pen;

COLORREF m_PenColor;

CBrushm_Brush;

COLORREF m_BrushColor;

intm_BrushStyle;

CRectm_BrushColorSwatch;

CRectm_BrushPreviewSwatch;

CMetaFileDC* m_pMF;

public:

afx_msg void OnStnClickedPencolor();

intm_PenStyle;

CComboBoxm_ShapesCombo;

voidDrawShape(bool);

afx_msg void OnCbnSelchangeShapes();

CListBoxm_BrushStyleList;

afx_msg void OnLbnSelchangeBrushstyle();

afx_msg void OnStnClickedBrushcolor();

voidPaintBrushPreview(void);

afx_msg void OnDestroy();

};

 

// PaintORama.cpp: Defines the class behaviors for the application.

//

#include "stdafx.h"

#include "PaintORama.h"

#include "PaintORamaDlg.h"

#include "afxdialogex.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// CAboutDlg dialog used for App About

classCAboutDlg: public CDialogEx

{

public:

CAboutDlg();

// Dialog Data

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

// Implementation

protected:

DECLARE_MESSAGE_MAP()

};

 

CAboutDlg::CAboutDlg(): CDialogEx(CAboutDlg::IDD)

{

}

voidCAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

}

 

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)

END_MESSAGE_MAP()

// CPaintORamaDlg dialog

CPaintORamaDlg::CPaintORamaDlg(CWnd* pParent /*=NULL*/)

: CDialogEx(CPaintORamaDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

m_PenWidth = 0;

m_PenWidth = 1;

m_PenColor = RGB(0, 0, 0);

m_PenStyle = 0;

m_PenStyle = PS_INSIDEFRAME;

}

 

voidCPaintORamaDlg::DoDataExchange(CDataExchange* pDX)

{

CDialogEx::DoDataExchange(pDX);

DDX_Text(pDX, IDC_PENWIDTH, m_PenWidth);

DDV_MinMaxInt(pDX, m_PenWidth, 1, 32);

DDX_Radio(pDX, IDC_SOLID_PEN, m_PenStyle);

DDX_Control(pDX, IDC_SHAPES, m_ShapesCombo);

DDX_Control(pDX, IDC_BRUSHSTYLE, m_BrushStyleList);

}

 

BEGIN_MESSAGE_MAP(CPaintORamaDlg, CDialogEx)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_CLEARBTN, &CPaintORamaDlg::OnBnClickedClearbtn)

ON_WM_LBUTTONDOWN()

ON_WM_LBUTTONUP()

ON_WM_MOUSEMOVE()

ON_STN_CLICKED(IDC_PENCOLOR, &CPaintORamaDlg::OnStnClickedPencolor)

ON_CBN_SELCHANGE(IDC_SHAPES, &CPaintORamaDlg::OnCbnSelchangeShapes)

ON_LBN_SELCHANGE(IDC_BRUSHSTYLE, &CPaintORamaDlg::OnLbnSelchangeBrushstyle)

ON_STN_CLICKED(IDC_BRUSHCOLOR, &CPaintORamaDlg::OnStnClickedBrushcolor)

ON_WM_DESTROY()

END_MESSAGE_MAP()

 

 

// CPaintORamaDlg message handlers

BOOL CPaintORamaDlg::OnInitDialog()

{

CDialogEx::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu!= NULL)

{

BOOL bNameValid;

CStringstrAboutMenu;

bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

ASSERT(bNameValid);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

 

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

m_IsDrawing = false;

CWnd* pCanvas = GetDlgItem(IDC_CANVAS);

pCanvas->GetWindowRect(&m_Canvas);

m_Canvas.DeflateRect(2, 2, 1, 1);

m_Canvas.top -= 20;

m_Canvas.bottom -= 28;

m_Canvas.right -=8;

CSpinButtonCtrl* pSpin = (CSpinButtonCtrl*) GetDlgItem(IDC_SPIN1);

pSpin->SetRange(1, 32);

pSpin->SetPos(1);

CWnd* pPenColor = GetDlgItem(IDC_PENCOLOR);

pPenColor->GetWindowRect(&m_PenColorSwatch);

ScreenToClient(&m_PenColorSwatch);

m_PenColorSwatch.DeflateRect(2, 2, 1, 1);

m_ShapesCombo.SetCurSel(0);

CStrings("(none)");

m_BrushStyleList.AddString((LPCTSTR)s);

s = "Solid";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "LL-UR Diagonal";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "UL-LR Diagonal";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "Grid";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "Grid Diagonal";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "Horizontal";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "Vertical";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "White";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "Light Gray";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "Medium Gray";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "Dark Gray";

m_BrushStyleList.AddString((LPCTSTR)s);

s = "Black";

m_BrushStyleList.AddString((LPCTSTR)s);

m_BrushStyleList.SetCurSel(8);

CWnd* pBrushColor = GetDlgItem(IDC_BRUSHCOLOR);

pBrushColor->GetWindowRect(&m_BrushColorSwatch);

ScreenToClient(&m_BrushColorSwatch);

m_BrushColorSwatch.DeflateRect(2, 2, 1, 1);

CWnd* pPreviewColor = GetDlgItem(IDC_BRUSHPREVIEW);

pPreviewColor->GetWindowRect(&m_BrushPreviewSwatch);

ScreenToClient(&m_BrushPreviewSwatch);

m_BrushPreviewSwatch.DeflateRect(2, 2, 1, 1);

m_BrushColor = RGB(255, 255, 255);

m_Brush.CreateStockObject(WHITE_BRUSH);

m_pMF = new CMetaFileDC;

m_pMF->Create();

return TRUE; // return TRUE unless you set the focus to a control

}

 

voidCPaintORamaDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID& 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDialogEx::OnSysCommand(nID, lParam);

}

}

 

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

 

voidCPaintORamaDlg::OnPaint()

{

/*if (IsIconic())

{

CPaintDCdc(this); // device context for painting

 

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

 

// Center icon in client rectangle

intcxIcon = GetSystemMetrics(SM_CXICON);

intcyIcon = GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

 

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialogEx::OnPaint();

}*/

CPaintDCdc(this);

HMETAFILE hmf = m_pMF->Close();

dc.PlayMetaFile(hmf);

CMetaFileDC* temp = new CMetaFileDC;

temp->Create();

temp->PlayMetaFile(hmf);

::DeleteMetaFile(hmf);

deletem_pMF;

m_pMF = temp;

staticboolfirsTime = true;

if (firsTime)

{

OnBnClickedClearbtn();

firsTime = false;

}

}

 

// The system calls this function to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CPaintORamaDlg::OnQueryDragIcon()

{

returnstatic_cast<HCURSOR>(m_hIcon);

}

 

voidCPaintORamaDlg::OnBnClickedClearbtn()

{

// TODO: Add your control notification handler code here

CClientDCdc(this);

HMETAFILE hmf = m_pMF->Close();

::DeleteMetaFile(hmf);

deletem_pMF;

m_pMF = new CMetaFileDC;

m_pMF->Create();

m_pMF->SetAttribDC(dc);

dc.SelectStockObject(NULL_PEN);

dc.Rectangle(m_Canvas);

m_pMF->SelectStockObject(NULL_PEN);

m_pMF->Rectangle(m_Canvas.left, m_Canvas.top, m_Canvas.right + 1, m_Canvas.bottom + 1);

}

 

voidCPaintORamaDlg::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

if (m_Canvas.PtInRect(point))

{

UpdateData(TRUE);

m_Pen.DeleteObject();

//m_Pen.CreatePen(PS_SOLID, m_PenWidth, RGB(0, 0, 0));

m_IsDrawing = true;

m_LineStart = point;

m_LineEnd = point;

///SetCapture();

WM_LBUTTONUP;

//UpdateData(TRUE);

m_Pen.CreatePen(m_PenStyle, m_PenWidth, m_PenColor);

}

CDialogEx::OnLButtonDown(nFlags, point);

}

 

voidCPaintORamaDlg::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

m_IsDrawing = false;

m_LineEnd = point;

DrawShape(true);

//ReleaseCapture();

CDialogEx::OnLButtonUp(nFlags, point);

}

 

voidCPaintORamaDlg::OnMouseMove(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

if (m_IsDrawing&& (nFlags& MK_LBUTTON) &&m_Canvas.PtInRect(point))

{

if (m_IsDrawing&& (nFlags& MK_LBUTTON &&m_Canvas.PtInRect(point)))

{

DrawShape(true);

m_LineEnd = point;

DrawShape(true);

}

}

CDialogEx::OnMouseMove(nFlags, point);

}

voidCPaintORamaDlg::OnStnClickedPencolor()

{

// TODO: Add your control notification handler code here

CColorDialogdlg(m_PenColor);

if (dlg.DoModal() == IDOK)

{

m_PenColor = dlg.GetColor();

CBrush swatch;

swatch.CreateSolidBrush(m_PenColor);

CClientDCdc(this);

dc.FillRect(&m_PenColorSwatch, &swatch);

}

}

voidCPaintORamaDlg::DrawShape(bool stretch)

{

CClientDCdc(this);

m_pMF->SetAttribDC(dc);

dc.IntersectClipRect(&m_Canvas);

m_pMF->IntersectClipRect(m_Canvas);

intdrawMode = m_ShapesCombo.GetCurSel();

dc.SelectObject(&m_Pen);

dc.SelectObject(&m_Brush);

m_pMF->SelectObject(&m_Pen);

m_pMF->SelectObject(&m_Brush);

if (stretch &&drawMode!= 0)

{

dc.SetROP2(R2_NOT);

}

switch (drawMode)

{

case 0: dc.MoveTo(m_LineStart);

dc.LineTo(m_LineEnd);

m_pMF->MoveTo(m_LineStart);

m_pMF->LineTo(m_LineEnd);

m_LineStart = m_LineEnd;

break;

case 1: dc.MoveTo(m_LineStart);

dc.LineTo(m_LineEnd);

if (!stretch)

{

m_pMF->MoveTo(m_LineStart);

m_pMF->LineTo(m_LineEnd);

}

break;

case 2: dc.Ellipse(CRect(m_LineStart, m_LineEnd));

if (!stretch)

{

m_pMF->Ellipse(CRect(m_LineStart, m_LineEnd));

}

break;

case 3: dc.Rectangle(CRect(m_LineStart, m_LineEnd));

if (!stretch)

{

m_pMF->Rectangle(CRect(m_LineStart, m_LineEnd));

}

break;

}

}

 

 

voidCPaintORamaDlg::OnCbnSelchangeShapes()

{

// TODO: Add your control notification handler code here

}

voidCPaintORamaDlg::OnLbnSelchangeBrushstyle()

{

m_Brush.DeleteObject();

int style = m_BrushStyleList.GetCurSel();

switch (style)

{

case 0: m_Brush.CreateStockObject(NULL_BRUSH);

break;

case 1: m_Brush.CreateStockObject(m_BrushColor);

break;

case 2: m_Brush.CreateHatchBrush(HS_BDIAGONAL, m_BrushColor);

break;

case 3: m_Brush.CreateHatchBrush(HS_FDIAGONAL, m_BrushColor);

break;

case 4: m_Brush.CreateHatchBrush(HS_CROSS, m_BrushColor);

break;

case 5: m_Brush.CreateHatchBrush(HS_DIAGCROSS, m_BrushColor);

break;

case 6: m_Brush.CreateHatchBrush(HS_HORIZONTAL, m_BrushColor);

break;

case 7: m_Brush.CreateHatchBrush(HS_VERTICAL, m_BrushColor);

break;

case 9: m_Brush.CreateStockObject(m_BrushColor);

break;

case 10: m_Brush.CreateStockObject(LTGRAY_BRUSH);

break;

case 11: m_Brush.CreateStockObject(DKGRAY_BRUSH);

break;

case 12: m_Brush.CreateStockObject(BLACK_BRUSH);

break;

default: m_Brush.CreateStockObject(WHITE_BRUSH);

break;

}

PaintBrushPreview();

}

 

 

voidCPaintORamaDlg::OnStnClickedBrushcolor()

{

CColorDialogdlg(m_BrushColor);

if (dlg.DoModal() == IDOK)

{

m_BrushColor = dlg.GetColor();

CClientDCdc(this);

CBrushb(m_BrushColor);

dc.FillRect(&m_BrushColorSwatch, &b);

}

OnLbnSelchangeBrushstyle();

}

voidCPaintORamaDlg::PaintBrushPreview(void)

{

CClientDCdc(this);

dc.FillRect(&m_BrushPreviewSwatch, &m_Brush);

}

voidCPaintORamaDlg::OnDestroy()

{

CDialogEx::OnDestroy();

m_pMF->Close();

deletem_pMF;

// TODO: Add your message handler code here

}

 

ЗМІСТ

ВСТУП.. 5

1 АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ.. 6

1.1 Аналіз предметної області 6

1.2 Аналоги і їх функціональні властивості 7

1.3 Обґрунтування вибору мови програмування. 7

1.4 Висновки…………………………………………………………………..9

2 РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ.. 10

2.1 Обґрунтування вибору інтерфейсу. 10

2.2 Розробка інтерфейсу…………………………………………………….11

2.3 Розробка дизайну……………………………………………………….11

2.4 Висновки…………………………………………………………………13

3 РОЗРОБКА багатовіконного додатку.. 14

3.1 Розробка алгоритму функціонування програми. 14

3.2 Вибір середовища програмування. 15

3.3 Розробка багатовіконного графічного додатку. 16

3.4 Інструкція оператора. 18

3.5 Висновки. 19

4 ТЕСТУВАННЯ ПРОГРАМИ.. 20

4.1 Методики, що використані для тестування програми. 20

4.2 Інструкція для тестування програми. 21

4.3 Висновки. 22

ВИСНОВКИ…………………………………………………………………….23

ПЕРЕЛІК ПОСИЛАНЬ. 24

ДОДАТОК А. Текст програми……………………………………………….25

ВСТУП

 

Дана курсова робота присвячується питанням роботи з функціями Windows Application Programming Interface (API).

Windows — загальне найменування для цілого набору базових функцій інтерфейсів програмування додатків операційних систем сімейств Windows корпорації Майкрософт.

Windows API був спочатку спроектований для використання в програмах, написаних мовою C (або C++). Робота через Windows API — це найбільш близький до системи спосіб взаємодії з нею прикладних програм. Існують різні версії функцій Windows API основні з них наведенні нижче:

- Win16 — перша версія Windows API для 16-розрядних версій Windows. Спочатку називався просто Windows API, потім почав називатися Win16 для розрізнення із Win32.

- Win32s — підмножина Win32, що встановлюється на сімейство 16-розрядних систем Windows.

- Win32 — 32-розрядний API для сучасних версій Windows. Найпопулярніша нині версія.

- win64 — 64-розрядна версія Win32, що містить додаткові функції для використання на 64-розрядних комп'ютерах. Win64 API можна знайти тільки в 64-розрядних версіях Windows.

Метою роботи є розробка програми графічного багатовіконного додатку з використанням Win32 API.

Для досягнення поставленої мети в роботі вирішуються такі завдання:

- аналіз сучасного стану питання та обґрунтування завдання на роботу;

- розробка інтерфейсу програми;

- розробка багатовіконного додатку;

- тестування програми

 

АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ

Аналіз предметної області

 

Windows Api (application programming interfaces) — загальне найменування для цілого набору базових функцій інтерфейсів програмування застосунків операційних систем сімейств Windows корпорації Майкрософт. Є найпрямішим способом взаємодії з Windows. Для створення програм, що використовують Windows API, Майкрософт випускає SDK, який називається Platform SDK і містить документацію, набір бібліотек, утиліт і інших інструментальних засобів[1-2].

Windows API був спочатку спроектований для використання в програмах, написаних на мові C (або C++). Робота через Windows API — це найближчий до системи спосіб взаємодії з нею прикладних програм. Нижчий рівень доступу, необхідніший тільки для драйверів-пристроїв, в поточних версіях Windows надається через Windows Driver Model.

 

Версії Win:

Win16 — перша версія WindowsAPI для 16-розрядних версій Windows.Спочатку називався просто WindowsAPI, потім почав називатися Win16 для розрізнення із Win32.

Win32s — підмножина Win32, що встановлюється на сімейство 16-розрядних систем.

Win32 — 32-розрядний API для сучасних версій Windows. Найпопулярніша нині версія. Базові функції цього API реалізовані в DLL kernel32.dll і advapi32.dll; базові модулі GUI — в user32.dll і gdi32.dll. Win32 з'явився разом з WindowsNT і потім був перенесений в системи серії Windows 9x.

win64 — 64-розрядна версія Win32, що містить додаткові функції для використання на 64-розрядних комп'ютерах.Win64 API можна знайти тільки в 64-розрядних версіях WindowsXP і WindowsServer 2003.

 

Аналоги і їх функціональні властивості

Вікна є основним засобом графічної прикладної програми, що базується на Win32, які взаємодіють з користувачем і виконують завдання, тому одним з перших завдань графічного додатку, що базується на Win32, є створення вікна. Цей огляд описує елементи прикладного програмного інтерфейсу (API) Microsoft Win32, який прикладні програми використовують, щоб створювати і використовувати вікна,управляти зв'язками між ними а також розміром, переміщенням і відображенням вікна на екрані дисплея[2].

Коли запускається Windows, він автоматично створює вікно робочого столу (desktop window). Вікно робочого столу - визначуване системою вікно, яке забарвлює фон екрану і служить ядром для всіх вікон, що відображаються усіма прикладними програмами.

Вікно Робочого столу використовує точковий малюнок, щоб промальовувати фон екрану. Візерунок, створюваний точковим малюнком називається шпалерами робочого столу (desktop wallpaper). За замовчуванням, вікно робочого столу використовує точковий малюнок з файлу. BMP, який визначений в системному реєстрі, як шпалери робочого столу [3].

Функція Get Desktop Window повертає дескриптор вікна робочого столу.

Прикладна програма конфігурації системи, типу аплета Панель Управління (Control Panel), змінює настільні шпалери робочого столу, використовуючи функцію System Parameters Info з параметром wAction, встановленим в SPI_SETDESKWALLPAPER і параметром lpvParam, визначальним ім'я файлу растрової картинки.



Поделиться:


Последнее изменение этой страницы: 2016-08-06; просмотров: 232; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.82.167 (0.429 с.)