Программирование приложений для 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