Программа с графическим интерфейсом WinApi
Автор: Александра Воронцова • Декабрь 6, 2020 • Курсовая работа • 2,845 Слов (12 Страниц) • 471 Просмотры
Министерство образования и науки РФ
Федеральное государственное образовательное учреждение
высшего образования
«Ярославский государственный технический университет»
Курсовой проект защищен
с оценкой ( )
Отчёт по курсовой работе по дисциплине «Программирование»
Пояснительная записка к курсовому проекту
по дисциплине
«Программирование»
ЯГТУ 090304.65
Работу выполнил
«___» ____________ 2019
2019
Введение:
Windows API (application programming interfaces) — общее наименование целого набора базовых функций интерфейсов программирования приложений операционных систем семейств Windows и Windows NT корпорации «Майкрософт». Является самым прямым способом взаимодействия приложений с Windows. Для создания программ, использующих Windows API, «Майкрософт» выпускает библиотек, утилит и других инструментальных средств.
Задание:
разработать программу с графическим интерфейсом WinApi, осуществляющую табулирование функции: y = ( (х - 3.2^(х*2)) )/(x^2 + log(x^2+1) )*(i - 1/exp^(-х) ) на задаваемом интервале с задаваемым числом шагов, с дополнительной функцией, позволяющей произвести пересчет с автоматическим увеличением числа шагов в выбираемое число раз: 2, 5, 10.
Описание используемых алгоритмов:
используем функцию создания окна CreateWindow для создания кнопки расcчёта и очищения, listbox и полей edit. Используем switch case обработки комманд.Функция GetWindowText копирует вводимые значения x1, x2 и количество шагов в буфер. Функция atof() преобразует значение buf типа char в величину типа double. Функция MessageBox создает, отображает на экране и оперирует окном сообщений, которое оповещает об ошибке ввода неверного значения. Используем стандартные математические функции, такие как log, cos, pow, exp. Pow используется для возведения в степень. Функция strcat() используется для соединения строк в одну. Функция SendMessage отправляет заданную строку в listbox. Используем цикл for для вывода всех значений в listbox. Условие создаем с помощью if. TextOut для вывода статичного текста на окно программы.
Инструкция по работе с программой:
1.Для работы с программой, заполните графы «Значение х1», «Значение х2», «Количество шагов», затем нажмите кнопку «Показать результат». На экране появится результат табулирования.
[pic 1]
Рисунок 1
2.Для того, чтобы очистить данные и результаты табулирования, нажмите кнопку «Очистить».
[pic 2]
Рисунок 2
3. Для того, чтобы произвести пересчет с автоматическим увеличением числа шагов в выбираемое число раз: 2, 5, 10, кликните кнопку «УВЕЛИЧИТЬ ШАГИ В…», которая находится вв, затем выберите необходимое число. После этого выберите необходимое число. Изменится значение «количество шагов». На экране появится результат перерасчета. ерху окна
[pic 3]
Рисунок 3
Код:
#include <windows.h>
#include <math.h>
#include <stdio.h>
#define ID_EDIT 1
#define ID_EDIT 2
#define ID_EDIT 3
#define ID_BUTTON 10
#define ID_BUTTON 11
#define ID_LIST 100
#define CM_2 1000
#define CM_5 1001
#define CM_10 1002
PAINTSTRUCT ps;
HDC hDC;
static HWND hEdit[3], hButton[2], hListBox;
double x1,x2 , y, shag, razmer_shaga;
char buff[256];
char buff0[256];//для хранения си строки
char buff1[256];
char buff2[256];
char buff3[256];
LRESULT CALLBACK WndProc(HWND , UINT, WPARAM, LPARAM );
void raschet(HWND hwnd){
SendMessage(hListBox, LB_RESETCONTENT, 0, 0);
GetWindowText(hEdit[1],buff,256);
x1=atof(buff);
buff[256]=0;
GetWindowText(hEdit[2],buff1,256);
x2=atof(buff1);
GetWindowText(hEdit[3],buff2,256);
shag=atof(buff2);
razmer_shaga=(x2-x1)/shag;
...