Программирование приложений для Windows с использованием функций WinAPI

Создание приложения, выводящего в окне графики стандартных функций косинусов. Общие положения программирования в среде Windows. Отличительные особенности Borland C++. Реализация вывода графиков. Общие положения создания и обработки окон приложений.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.06.2012
Размер файла 312,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Содержание:

1.Техническое задание

  • 2.Краткие теоретические сведения
    • 2.1Программирование на С++
    • 2.2 Общие положения программирования в среде Windows
      • 2.2.1 Основные положения
      • 2.2.2 Содержимое оконного приложения
      • 2.2.3 Создание приложений Windows с использованием OWL
    • 2.3 Отличительные особенности Borland C++
  • 3. Состав проекта
    • 3.1 Файлы, используемые в проекте
    • 3.2 Структура программы
  • 4. Описание работы проекта
    • 4.1 Общие положения создания и обработки окон приложений
    • 4.2 Реализация вывода графиков
      • 4.2.1 Проблема корректного вывода
      • 4.2.2 Решение проблемы корректного вывода
  • 5. Алгоритмы
    • 5.1 Алгоритм функции вывода графика
  • 6. Руководство пользователя
    • 6.1 Требования к системе
    • 6.2 Использование проекта
  • 7. Исходные коды
    • 7.1 KPS.cpp
    • 7.2 kps.rh
    • 7.3 kps.rc

1. Техническое задание

Создание приложения, выводящего в окне графики стандартных функций косинусов

2. Краткие теоретические сведения

2.1 Программирование на С++

В настоящее время язык С++ является ведущим языком программирования в различных средах и операционных системах. Программу на языке С++ можно написать и откомпилировать в таких операционных системах как MS DOS, WINDOWS, UNIX, MACINTOSH OS.

Язык С++ является наследником языка С, который так же используется в наши дни. Не смотря на множество добавлений в С++ по сравнению с С, в компиляторах С++ можно откомпилировать программу С, так как в С++ используются те же правила и функции, что и в языке С. Главным отличием между языками является то, что язык С - процедурный, а С++ - объектно-ориентированный, но так же может использоваться, как процедурный. Процедурное программирование - последовательный вызов команд-процедур обработки данных, а Объектно-ориентированное программирование (ООП) - взаимодействие объектов.

Для программирования под каждую ОС используются различные компиляторы и линкеры, в которых могут быть свои правила, однако, все компиляторы должны придерживаться общего стандарта С++ (в настоящее время используется стандарт С++09) - обычно версию стандарта, используемого компилятором, можно определить по году выпуска текущего компилятора.

Не смотря на то, что любое приложение с использованием языка С++ можно написать в текстовом редакторе и откомпилировать, этот метод очень трудный, особенно при работе с использованием системных ресурсов, окон, графики. Так же возникает проблема при использовании нескольких файлов, когда нужно постоянно переключатся между ними. Для упрощения жизни программистов были созданы IDE (Integrated Development Environment -- интегрированная среда разработки).

Не смотря на появление конкурирующих языков, таких как: JAVA, Python, C#, С++ не теряет популярности и продолжает использоваться.

2.2 Общие положения программирования в среде Windows

2.2.1 Основные положения

Программирование в WINDOWS сильно отличается от программирования в MS DOS. В отличии от DOS, где во время работы приложения нельзя использовать другие и программа выполняется последовательно (команда за командой), в WINDOWS кроме программы, написанной программистом работают все остальные, работавшие до запуска, работает сама система, а так же могут быть запущены другие приложения (в том числе очередной экземпляр текущего приложения). Так как все приложения должны принимать что-либо от пользователя, а так же выводить какие-либо данные, и делать это не мешая друг другу (либо влиять друг на друга), было создано много механизмов. Программируя под WINDOWS необходимо учитывать все эти механизмы и понимать принцип их работы для достижения максимального быстродействия программы и устранения всех возможных ошибок, возможных при работе программы.

2.2.2 Содержимое оконного приложения

Приложение с использованием окна должно содержать по меньшей мере две функции: главной и функции обработки сообщений (оконной процедуры). Следует отметить, что вторая функция не вызывается из главной и из других функций вообще. Она является функцией обратного вызова и вызывается самой системой при возникновении различных событий.

2.2.3 Создание приложений Windows с использованием OWL

Object Windows Library (OWL) -- библиотека классов, разработанная фирмой Borland для создания оконных приложений на языках Си и Pascal. Данная библиотека использовалась во многих средствах программирования компании Borland, таких как Turbo Pascal for Windows, Borland Pascal, Borland C++, C++ Builder и других.

Библиотека значительно упрощает создание оконных приложений для Windows. Она избавляет программиста от надобности писать множество строчек описания каждого окна - вместо этого просто нужно унаследовать класс окна(TFrameWindow) и задать желаемые настройки.

Так же программисту, использующему OWL, не нужно писать и задавать функцию обработки сообщений - нужно только унаследовать класс приложения (TApplication).

Все функции всех допустимых событий вызываются в обработчике сообщений внутри этого класса. Функции в основном классе являются пустыми. Для задания действий по возникновению событий - необходимо перегрузить соответствующую функцию класса окна.

2.3 Отличительные особенности Borland C++ 5

Borland C++ -- среда программирования (IDE) на языках Си и C++ для DOS, Windows и Windows NT. Среда включает в себя удобные утилиты для редактирования ресурсов программы. Вместе с Borland C++ поставляется множество примеров приложений, в которых можно увидеть возможности среды разработки, а так же можно узнать как реализован каждый пример, так как предоставляются исходные коды.

Borland C++ поддерживает как свои библиотеки (OWL), так и сторонние (MFC). Так же среда

3. Состав проекта

3.1 Файлы, используемые в проекте

kps.ide - Файл проекта, хранящий параметры приложения, включенные в проект файлы.

kps.cpp - Файл, содержащий код программы

kps.rc - Файл, содержащий описание и содержимое ресурсов.

kps.rh - Файл определения ресурсов.

3.2 Структура программы

Рисунок 1 - Общая структура программ

4. Описание работы проекта

4.1 Общие положения создания и обработки окон приложений

Программирование под Windows подразумевает использование окон. В данном курсовом проекте используется библиотека классов OWL, которая самостоятельно осуществляет создание окна и обеспечивает вызов функций обработки событий, которые прописываются по желанию.

4.2 Реализация вывода графиков

4.2.1 Проблема корректного вывода

Проблема корректного вывода графиков заключается в том, что графики строятся по функциям, значения которых зависят от единиц, а иногда десятых долей аргументов. Если выводить графики по функциям - их практически невозможно будет видеть. Кроме того, в графических системах ось Y идет сверху вниз и график будет отражен.

4.2.2 Решение проблемы корректного вывода

Для корректного вывода графиков нужно растянуть результаты по экрану. Для этого изначально необходимы размеры экрана (screen_width, screen_height), а так же диапазон значений и аргументов, отображаемых на графике (x_min, x_max, y_min, y_max).

Путем вычисления размеров функции по обоим осям:

x_size = x_max-x_min;

y_size = y_max-y_min;

И дальнейшего деления на эти значения размеров экрана, можно получить размер одного деления на экране:

x_del= (screen_width)/x_size;

y_del= (screen_height)/y_size;

Так как диапозон может быть таким, что оси координат будут не по центру - необходимо вычислять положение осей, расчеты ведутся относительно минимальных значений диапазона:

y_center=screen_height- (-y_min*y_del) ;

x_center=-x_min * x_del;

При выводе графиков каждое значение и аргумент функции y=f(x) умножаются на коэффициенты x_del, y_del и к ним так же прибавляются значения положения осей координат.

5. Алгоритмы

график программирование windows borland

5.1 Алгоритм функции вывода графика

Рисунок 2- Алгоритм функции вывода графиков, часть 1

Рисунок 3- Алгоритм функции вывода графиков, часть 2

6. Руководство пользователя

6.1 Требования к системе

Данный курсовой проект использует библиотеку классов OWL - требуется наличие данной библиотеки в Windows.

Минимальные требования к характеристикам ЭВМ:

Процессор: Pentium с частотой 133 Мгц

Оперативная память: 32 мб

Место на жестком диске: 1 мб

6.2 Использование проекта

Проект представляет собой окно с графиком. График выводится вместе с осями координат, где помечены единичные отрезки. Так же на графике отмечены оси и нулевые координаты.

Рисунок 4 - Окно программы после запуска

С помощью меню Functions выбирается доступная функция:Cos(X)

7. Исходные коды

7.1 KPS.cpp

#include <owl\owlall.h>

#include <math.h>

#include "kps.rh"

int screen_width, screen_height, x_center, y_center;

double x, y, x_max, x_min, y_max, y_min, x_size, y_size, x_del, y_del, x_scr, y_scr;

double Func_Cos(double x)

{

return cos(x);

}

double (*func) (double x);

class TFr:public TFrameWindow

{

public:

TFr(TWindow* parent, const char far* title):TFrameWindow(parent, title)

{SetBkgndColor(COLOR_WINDOWFRAME+1);

screen_width=640; screen_height=480;

x_min = -10;

x_max = 10;

y_min = -10;

y_max = 10;

Attr.X=380; Attr.Y=200;

Attr.W=screen_width; Attr.H=screen_height;

x_size = x_max-x_min;

y_size = y_max-y_min;

x_del= (screen_width-20)/x_size;

y_del= (screen_height-20)/y_size;

y_center=screen_height-10 - (-y_min*y_del) ;

x_center=10 + (-x_min * x_del);

func = Func_Cos;

}

void MCos()

{

func = Func_Cos;

Invalidate();

}

void Move_Ords()

{

x_size = x_max-x_min;

y_size = y_max-y_min;

x_del= (screen_width-20)/x_size;

y_del= (screen_height-20)/y_size;

y_center=screen_height-10 - (-y_min*y_del) ;

x_center=10 + (-x_min * x_del);

Invalidate();

}

void Exits()

{

exit(0);

}

void About()

{

TDialog(this, "ABOUT").Execute();

}

void Paint(TDC&,bool,TRect&);

DECLARE_RESPONSE_TABLE(TFr);

};

DEFINE_RESPONSE_TABLE1(TFr, TFrameWindow)

EV_COMMAND(CM_EXIT, Exits),

EV_COMMAND(CM_GRAPHICSITEM_COS, MCos),

EV_COMMAND(CM_ABOUT, About),

END_RESPONSE_TABLE;

void TFr::Paint(TDC&dc,bool,TRect&)

{

dc.SetBkMode(TColor::LtGray);

//TBrush brush(TColor::Black,HS_BDIAGONAL);

//TRect rect(10,10,155,155);

//dc.FillRect(rect,brush);

dc.MoveTo(10,y_center);

dc.LineTo(screen_width-10,y_center);

dc.LineTo(screen_width-20,y_center+5);

dc.MoveTo(screen_width-10,y_center);

dc.LineTo(screen_width-20,y_center-5);

dc.TextOut(screen_width-30,y_center-20,"X");

dc.MoveTo(x_center,10);

dc.LineTo(x_center+5,20);

dc.MoveTo(x_center,10);

dc.LineTo(x_center-5,20);

dc.MoveTo(x_center,10);

dc.LineTo(x_center,screen_height-10);

dc.TextOut(x_center-20,20,"Y");

dc.TextOut(x_center+10,y_center+10,"0,0");

dc.MoveTo(0, 0);

dc.LineTo(screen_width,0);

dc.LineTo(screen_width,screen_height);

dc.LineTo(0,screen_height);

dc.LineTo(0,0);

for (x=0; x<screen_width-10-x_del; x+=x_del)

{

x_scr=x+10;

y_scr= (5 + y_center);

dc.MoveTo(x_scr, y_scr);

y_scr -=10;

dc.LineTo(x_scr,y_scr);

}

for (y=y_del; y<=screen_height; y+=y_del)

{

y_scr=y+10;

x_scr= (5 + x_center);

dc.MoveTo(x_scr, y_scr);

x_scr -=10;

dc.LineTo(x_scr,y_scr);

}

for (x=x_min; x<=x_max; x+=1/x_del)

{

x_scr=(x*x_del) + x_center;

y = -func(x) ;

y_scr= ((y*y_del) + y_center);

if (y_scr>screen_height-10) y_scr=screen_height-10;

if (y_scr<10) y_scr=10;

if (x==x_min || y_scr==10 || y_scr==screen_height-10)

dc.MoveTo(x_scr, y_scr);

else dc.LineTo(x_scr,y_scr);

}

}

class myclass: public TApplication

{

public:

myclass(const char far* title):TApplication(title){};

virtual void InitMainWindow();

};

void myclass::InitMainWindow()

{

MainWindow = new TFr(0,"Курсовой проект - Кузьменко П.С. ЭВМ 2-1");

//MainWindow -> SetCursor(this, IDC_CURSOR1);

MainWindow -> SetIcon(this, IDI_ICON1);

MainWindow -> SetIconSm(this, IDI_ICON1);

MainWindow -> AssignMenu( IDM_MENU1);

}

int OwlMain(int,char* *)

{

myclass app("");

return app.Run();

}

7.2 kps.rh

#define IDC_CURSOR1 1

#define IDI_ICON1 1

#define IDM_MENU1 1

#define CM_EXIT 101

#define CM_GRAPHICSITEM_COS 202

#define CM_ABOUT 401

7.3 kps.rc

#define IDM_MENU1 1

#define CM_ITEM1 18873

#define CM_ABOUT 11842

#define CM_FILEITEM1 18873

#define CM_MOVEITEM4 18874

#define CM_MOVEITEM3 18873

#define CM_POPUPITEM3 18873

#define CM_GRAPHICSITEM_SAVE 11852

#define CM_GRAPHICSITEM1_OPEN 11851

#define CM_GRAPHICSITEM_ABOUT 11850

#define CM_GRAPHICSITEM_HELP 11849

#define CM_GRAPHICSITEM_OTHER 11848

#define CM_GRAPHICSITEM_RED 11847

#define CM_GRAPHICSITEM_BLUE 11846

#define CM_GRAPHICSITEM_X2 11845

#define CM_GRAPHICSITEM_X 11844

#define CM_GRAPHICSITEM__COS 11843

#define CM_GRAPHICSITEM_SIN 11842

#define CM_GRAPHCOLOURITEM2 18876

#define CM_POPUPPASTE2 18875

#define CM_POPUPITEM2 18874

#define CM_GRAPHICSITEM1 18873

#define CM_POPUPITEM1 18873

#define IDI_ICON1 1

#define IDC_CURSOR1 1

IDC_CURSOR1 CURSOR

IDI_ICON1 ICON

IDM_MENU1 MENU

{

POPUP "File"

{

MENUITEM "EXIT", 101

}

POPUP "Functions"

{

MENUITEM "Cos x", 202, INACTIVE

}

MENUITEM "About", 401

}

ABOUT DIALOG 10, 23, 141, 70

STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_CAPTION | WS_SYSMENU

CAPTION "О программе"

FONT 8, "MS Sans Serif"

{

PUSHBUTTON "OK", IDOK, 46, 50, 48, 14, 0, 0

CTEXT "Курсовой проект", -1, 6, 6, 129, 9, WS_CHILD | WS_VISIBLE | SS_CENTER, 0

CTEXT "Кузьменко П.С.", -1, 6, 20, 129, 9, WS_CHILD | WS_VISIBLE | SS_CENTER, 0

CTEXT "Вывод графиков(cos(x))", -1, 6, 35, 129, 9, WS_CHILD | WS_VISIBLE | SS_CENTER, 0

}

Размещено на Allbest.ru


Подобные документы

  • Теоретические основы написания Windows-приложений с использованием библиотеки MFC. Основы программирования под Windows. Проектирование приложений в среде Microsoft Visual C++. Описание логической структуры приложения, его функциональное назначение.

    курсовая работа [1,3 M], добавлен 12.12.2011

  • Техника создания графики при помощи API функций, экспортируемых библиотекой GDI32.DLL. Разработка на языке программирования С++ в среде программирования Microsoft Visual C++ программы для отображения часов реального времени в цифровом и аналоговом виде.

    курсовая работа [2,8 M], добавлен 27.01.2010

  • Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.

    курсовая работа [348,1 K], добавлен 02.07.2011

  • Основы организации приложения в Windows. Посылка и передача сообщений для окон. Создание и отображение главного окна приложения. Деактивация приложения, его фазы. Сообщения клавиатуры и функции для работы с ней. Определение состояния отдельных клавиш.

    лекция [65,7 K], добавлен 24.06.2009

  • Основы программирования на 32-битном Ассемблере, разработка с его помощью программы, демонстрирующей работу одного из разделов ОС Windоws. Описание используемых АРI-функций как интерфейса программирования приложений. Листинг программы, результаты работы.

    курсовая работа [164,5 K], добавлен 18.05.2014

  • Проектирование, кодирование и отладка службы Windows: "Контроль приложений", осуществляющей контроль набора приложений и управление ими; разработка приложения, управляющего этой службой. Взаимодействие службы и приложения; тестирование и сопровождение.

    курсовая работа [1,1 M], добавлен 22.05.2013

  • Теоретические сведения о таймерах Windows. Описание используемых WinAPI функций для измерения текущего времени, для создания виртуальных таймеров. Выключение и перезагрузка компьютера по нажатию на кнопку и по таймеру, вывод текущей даты и времени.

    курсовая работа [50,0 K], добавлен 18.05.2014

  • Преимущество построения Web-приложений для поддержки стандартных функций браузера. Настройка проекта Web-приложения. Создание и изменение исходных файлов. Изменение файла JavaServer Pages по умолчанию. Основные проблемы при выполнении Web-приложений.

    контрольная работа [362,8 K], добавлен 10.11.2013

  • Создание системной утилиты, работающей с реестром ОС Windows; структура, функции и роль реестра. Разработка программного обеспечения: интерфейс, структурная схема вызовов окон приложений; реализация и тестирование программы, процедуры; листинг модулей.

    курсовая работа [1,2 M], добавлен 01.06.2013

  • Реализация программы, созданной средствами языка C#. Предназначение Windows-приложения для решения комплекса задач. Определение состава форм с графиком функции. Вычисление коэффициентов полинома. Создание текстового поля для введения корней многочлена.

    курсовая работа [234,8 K], добавлен 13.11.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.