Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
API_lab_Гребенюк(всі лістинги л_р).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
416 Кб
Скачать
☆

Лабораторна робота 10

«main.cpp»

#include "head.h"

char szMenu[]="MainMenu";

HWND b1,b2,b3,b4;

bool viseShow = true;

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) {

int keyAnswer;

HDC hdc;

PAINTSTRUCT ps;

HINSTANCE hInst1;

switch(Message) {

case WM_CREATE:

b1 = CreateWindow("BUTTON", " Знаходження гіпотенузи",WS_VISIBLE|WS_CHILD|WS_BORDER,300,3,200,30,

hwnd, (HMENU) IDM_ENTER, NULL, NULL);

b2 = CreateWindow("BUTTON", " Середнє арифметичне",WS_VISIBLE|WS_CHILD|WS_BORDER,300,43,200,30,

hwnd, (HMENU) IDM_AVARAGE_AR, NULL, NULL);

b3 = CreateWindow("BUTTON", " Середнє геометричне",WS_VISIBLE|WS_CHILD|WS_BORDER,300,83,200,30,

hwnd, (HMENU) IDM_AVARAGE_GE, NULL, NULL);

b4 = CreateWindow("BUTTON", " Сума ряду",WS_VISIBLE|WS_CHILD|WS_BORDER,300,123,200,30,

hwnd, (HMENU) IDM_SUM_ROW, NULL, NULL);

break;

case WM_COMMAND:

switch(LOWORD(wParam)){

case IDM_ENTER:

DialogBox(NULL, (LPCTSTR)IDD_PIFAGORUS, hwnd, PifProc);

break;

case IDM_AVARAGE_AR:

DialogBox(NULL, (LPCTSTR)IDD_AVARAGE_AR, hwnd, AvarageArifm);

break;

case IDM_SUM_ROW:

DialogBox(NULL, (LPCTSTR)IDD_SUM_ROW, hwnd, sumRow);

break;

case IDM_AVARAGE_GE:

DialogBox(NULL, (LPCTSTR)IDD_AVARAGE_GE, hwnd, avarageGeom);

break;

case 2:

MessageBox(NULL, "Гребенюк Іван Андрійович, ПЗС-1644", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 3:

MessageBox(NULL, "Він холодний всередині", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 4:

MessageBox(NULL, "Вона мокра", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 5:

MessageBox(NULL, "Не йди на червоне світло світлофора", "АПІ_Гребенюк", MB_OK | MB_ICONSTOP);

break;

case 6:

keyAnswer = MessageBox(NULL, "Не сувай пальці в розетку", "АПІ_Гребенюк", MB_YESNOCANCEL | MB_ICONSTOP);

if(7 == keyAnswer || 2 == keyAnswer) MessageBox(NULL, "Не сувай", "АПІ_Гребенюк", MB_OK | MB_ICONSTOP);

else MessageBox(NULL, "Молодець!", "АПІ_Гребенюк", MB_OK | MB_ICONINFORMATION);

break;

case 7:

MessageBox(NULL, "Не сиди довго за ПК", "АПІ_Гребенюк", MB_CANCELTRYCONTINUE | MB_ICONEXCLAMATION);

break;

case 8:

MessageBox(NULL, "Не вбий", "АПІ_Гребенюк", MB_YESNO | MB_ICONSTOP);

break;

case 9:

MessageBox(NULL, "Не вкради", "АПІ_Гребенюк", MB_YESNO | MB_ICONSTOP);

break;

case 10:

MessageBox(NULL, "Не збреши", "АПІ_Гребенюк", MB_YESNO | MB_ICONSTOP);

break;

case 1:

exit(1);

break;

}

break;

case WM_DESTROY: {

PostQuitMessage(0);

break;

}

case WM_PAINT: {

if(viseShow){

ShowWindow(hwnd, SW_HIDE);

ShowWindow(hwnd, SW_SHOW);

viseShow = false;

}

hdc = BeginPaint (hwnd, &ps);

SetBkMode(hdc, TRANSPARENT);

SetTextColor(hdc, RGB(150,200,250));

TextOut (hdc,0,2," Лабораторна №10 (API)",20);

EndPaint (hwnd, &ps);

}

break;

default:

return DefWindowProc(hwnd, Message, wParam, lParam);

}

return 0;

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {

WNDCLASSEX wc;

HWND hwnd;

MSG Msg;

memset(&wc,0,sizeof(wc));

wc.cbSize = sizeof(WNDCLASSEX);

wc.style = 0;

wc.lpfnWndProc = WndProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hCursor = LoadCursor(hInstance, szCursorName);

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wc.lpszClassName = "WindowClass";

wc.hIcon = LoadIcon(hInstance, szIconName);

wc.hIconSm = LoadIcon(hInstance, szIconName);

wc.lpszMenuName=szMenu;

if(!RegisterClassEx(&wc)) {

MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);

return 0;

}

hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,"WindowClass","Гребенюк АПІ 10 лаб",WS_VISIBLE|WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

700,

300,

NULL,NULL,hInstance,NULL);

HBRUSH brush = CreateSolidBrush(RGB(0, 100, 0));//162 181 205

SetClassLongPtr(hwnd, GCLP_HBRBACKGROUND, (LONG)brush);

ShowWindow(hwnd, nCmdShow);

UpdateWindow(hwnd);

while(GetMessage(&Msg, NULL, 0, 0) > 0)

{

TranslateMessage(&Msg);

DispatchMessage(&Msg);

}

return Msg.wParam;

}

#include "avarageArifm.h"

#include "or.h"

#include "avarageGeom.h"

#include "sumRow.h"

«head.h»

#include <windows.h>

#include <math.h>

#define IDD_PIFAGORUS 102

#define IDD_AVARAGE_AR 101

#define IDD_AVARAGE_GE 1082

#define IDD_SUM_ROW 3323

#define IDC_EXIT 1000

#define IDC_VALUE1 1001

#define IDC_VALUE2 1002

#define IDC_VALUE3 1003

#define IDC_VALUE4 1014

#define IDC_EDIT1 1003

#define IDC_COUNT 1004

#define IDC_CLEAR 1005

#define IDM_ENTER 40002

#define IDM_SUM_ROW 2212

#define IDM_AVARAGE_AR 40113

#define IDM_AVARAGE_GE 40114

#define IDM_EXIT 40003

#define IDC_EDIT2 -1

#define IDC_STATIC -1

#define IDC_INSERT_V 3234

#define IDM_INFO_1 2

#define IDM_INFO_2 3

#define IDM_INFO_3 4

#define IDM_TASK_1 5

#define IDM_TASK_2 6

#define IDM_TASK_3 7

#define IDM_DAN_1 8

#define IDM_DAN_2 9

#define IDM_DAN_3 10

double a,b,c,d,e;

char str[80]="";

BOOL CALLBACK PifProc(HWND hdlg, UINT messg, WPARAM wParam, LPARAM lParam);

BOOL CALLBACK AvarageArifm(HWND hdlg, UINT messg, WPARAM wParam, LPARAM lParam);

BOOL CALLBACK avarageGeom(HWND hdlg, UINT messg, WPARAM wParam, LPARAM lParam);

BOOL CALLBACK sumRow(HWND hdlg, UINT messg, WPARAM wParam, LPARAM lParam);

char szIconName[] = "ICON2";

char szCursorName[] = "CURSOR1";

«avarageArifm.h»

BOOL CALLBACK AvarageArifm(HWND hdlg, UINT messg, WPARAM wParam, LPARAM lParam)

{

bool editSymbol1 = false, editSymbol2 = false, editSymbol3 = false;

switch (messg)

{

case WM_INITDIALOG:

return TRUE;

case WM_CREATE:

break;

case WM_COMMAND:

switch(LOWORD(wParam)) {

case IDC_COUNT:

GetDlgItemText(hdlg,IDC_VALUE1,str,40);

a=atof(str);

if(str[0]!=NULL) editSymbol1 = true;

GetDlgItemText(hdlg,IDC_VALUE2,str,40);

b=atof(str);

if(str[0]!=NULL) editSymbol2 = true;

GetDlgItemText(hdlg,IDC_VALUE3,str,40);

c=atof(str);

if(str[0]!=NULL) editSymbol3 = true;

d=(a+b+c)/3;

gcvt(d,10,str);

if(editSymbol1 && editSymbol2 && editSymbol3)

MessageBox(hdlg, str, "Результат",MB_ICONINFORMATION);

else MessageBox(hdlg, "Заповніть поля!", "Помилка",MB_ICONWARNING);

break;

case IDC_CLEAR:

SetDlgItemText(hdlg, IDC_VALUE1, "");

SetDlgItemText(hdlg, IDC_VALUE2, "");

SetDlgItemText(hdlg, IDC_VALUE3, "");

break;

case IDC_EXIT:

EndDialog(hdlg, LOWORD(wParam));

return TRUE;

break;

}

break;

case WM_CLOSE:

EndDialog(hdlg, LOWORD(wParam));

break;

default: return false;

}

}

«avarageGeom.h»

BOOL CALLBACK avarageGeom(HWND hdlg, UINT messg, WPARAM wParam, LPARAM lParam)

{

HDC hddc;

switch (messg)

{

case WM_INITDIALOG:

return TRUE;

case WM_CREATE:

break;

case WM_COMMAND:

switch(LOWORD(wParam)) {

case IDC_COUNT:

GetDlgItemText(hdlg,IDC_VALUE1,str,40);

a=atof(str);

GetDlgItemText(hdlg,IDC_VALUE2,str,40);

b=atof(str);

GetDlgItemText(hdlg,IDC_VALUE3,str,40);

c=atof(str);

GetDlgItemText(hdlg,IDC_VALUE4,str,40);

e=atof(str);

d=(a*b*c*e);

d = pow(d, 1.0/4.0);

gcvt(d,10,str);

hddc=GetDC(hdlg);

SetBkMode(hddc, TRANSPARENT);

LOGFONT lf;

HFONT hFont;

lf.lfHeight=16;

lf.lfWidth=16;

hFont = CreateFontIndirect(&lf);

ShowWindow(hdlg, SW_HIDE);

ShowWindow(hdlg, SW_SHOW);

TextOut(hddc,2,2,"Середнє-геометричне = ",strlen("Середнє-геометричне = "));

TextOut(hddc,162,2,str,strlen(str));

hddc = NULL;

hdlg = NULL;

break;

case IDC_CLEAR: //кнопка "Очистити"

SetDlgItemText(hdlg, IDC_VALUE1, "");

SetDlgItemText(hdlg, IDC_VALUE2, "");

SetDlgItemText(hdlg, IDC_VALUE3, "");

SetDlgItemText(hdlg, IDC_VALUE4, "");

break;

case IDC_EXIT:

EndDialog(hdlg, LOWORD(wParam));

return TRUE;

break;

}

break;

case WM_CLOSE:

EndDialog(hdlg, LOWORD(wParam));

break;

default: return false;

}

}

«sumRow.h»

int fact(int ch){

int sum_ch = 1;

while(ch!=0){

sum_ch *= ch;

ch--;

}

return sum_ch;

}

BOOL CALLBACK sumRow(HWND hdlg, UINT messg, WPARAM wParam, LPARAM lParam)

{

double a1,s1, x1, i1, eps1;

HDC hddc;

PAINTSTRUCT ps;

switch (messg)

{

case WM_INITDIALOG:

return TRUE;

case WM_CREATE:

break;

case WM_COMMAND:

switch(LOWORD(wParam)) {

case IDC_INSERT_V:

SetDlgItemText(hdlg, IDC_VALUE1, "0.25");

SetDlgItemText(hdlg, IDC_VALUE2, "0.00001");

case IDC_COUNT:

GetDlgItemText(hdlg,IDC_VALUE1,str,40);

a=atof(str);

GetDlgItemText(hdlg,IDC_VALUE2,str,40);

b=atof(str);

if(b > 0.1)

{

MessageBox(hdlg, "EPS повинен бути рівний або менше за 0.1", "Помилка",MB_ICONWARNING);

return true;

}

if(!b || !a){

MessageBox(hdlg, "Заповніть всі поля", "Помилка",MB_ICONWARNING);

return true;

}

ShowWindow(hdlg, SW_HIDE);

ShowWindow(hdlg, SW_SHOW);

hddc=GetDC(hdlg);

SetBkMode(hddc, TRANSPARENT);

LOGFONT lf;

HFONT hFont;

lf.lfHeight=16;

lf.lfWidth=16;

hFont = CreateFontIndirect(&lf);

a1=1;s1=0; x1=a; i1 = 1; eps1 = b;

while (fabs(a1)>eps1)

{

a1=(pow(i1,2)*pow(x1, i1) + 1)/(fact(i1) + pow(i1,2)) ;

i1++;

s1=s1+a1;

gcvt(i1,10,str);

TextOut(hddc,345,(i1*20)-30,str,strlen(str));

TextOut(hddc,365,(i1*20)-30,")",strlen(")"));

gcvt(s1,10,str);

TextOut(hddc,380,(i1*20)-30,str,strlen(str));

}

gcvt(s1,10,str);

TextOut(hddc,2,140,"Сума ряду = ",strlen("Сума ряду = "));

TextOut(hddc,85,140,str,strlen(str));

hddc = NULL;

hdlg = NULL;

break;

case IDC_CLEAR:

SetDlgItemText(hdlg, IDC_VALUE1, "");

SetDlgItemText(hdlg, IDC_VALUE2, "");

break;

case IDC_EXIT:

EndDialog(hdlg, LOWORD(wParam));

return TRUE; break;

}

break;

case WM_CLOSE:

EndDialog(hdlg, LOWORD(wParam));

break;

default: return false;

}

}

«dial_1.rc»

IDD_PIFAGORUS DIALOG DISCARDABLE 0, 0, 250, 134

STYLE WS_VISIBLE | WS_TABSTOP | WS_OVERLAPPED

CAPTION "Pifagor's Theoreme"

FONT 10, "System"

{

DEFPUSHBUTTON "Рахувати",IDC_COUNT,40,100,50,14

PUSHBUTTON "Очистити",IDC_CLEAR,104,100,50,14

LTEXT "Ввести перший катет:" ,IDC_STATIC,13,15,100,8

EDITTEXT IDC_VALUE1,13,26,217,14,ES_AUTOHSCROLL

LTEXT " Ввести другий катет:",IDC_STATIC,15,47,100,8

EDITTEXT IDC_VALUE2,14,58,217,14,ES_AUTOHSCROLL

PUSHBUTTON "Вихід",IDC_EXIT,163,100,50,14

}

«dial_2.rc»

IDD_AVARAGE_AR DIALOG DISCARDABLE 0, 0, 250, 100

STYLE WS_VISIBLE | WS_TABSTOP |WS_OVERLAPPEDWINDOW

CAPTION "Знаходження середньо-арифметичного"

FONT 10, "Arial"

{

DEFPUSHBUTTON "Рахувати",IDC_COUNT,170,13,50,14

PUSHBUTTON "Очистити",IDC_CLEAR,170,43,50,14

PUSHBUTTON "Вихід",IDC_EXIT,170,73,50,14

LTEXT "Введіть 1 число:" ,IDC_STATIC,13,15,100,8

EDITTEXT IDC_VALUE1,83,13,40,14,ES_AUTOHSCROLL

LTEXT "Введіть 2 число:" ,IDC_STATIC,13,45,100,8

EDITTEXT IDC_VALUE2,83,43,40,14,ES_AUTOHSCROLL

LTEXT "Введіть 3 число:" ,IDC_STATIC,13,75,100,8

EDITTEXT IDC_VALUE3,83,73,40,14,ES_AUTOHSCROLL

}

«dial_3.rc»

IDD_AVARAGE_GE DIALOG 0, 0, 250, 100

STYLE WS_VISIBLE | WS_TABSTOP |WS_OVERLAPPED

CAPTION "Знаходження середньо-арифметичного"

FONT 14, "Times New Roman" //шрифт

{

DEFPUSHBUTTON "Рахувати",IDC_COUNT,170,13,50,14

PUSHBUTTON "Очистити",IDC_CLEAR,170,43,50,14

PUSHBUTTON "Вихід",IDC_EXIT,170,73,50,14

LTEXT "Введіть 1 число:" ,IDC_STATIC,13,15,100,8

EDITTEXT IDC_VALUE1,83,13,40,14,ES_AUTOHSCROLL

LTEXT "Введіть 2 число:" ,IDC_STATIC,13,35,100,8

EDITTEXT IDC_VALUE2,83,33,40,14,ES_AUTOHSCROLL

LTEXT "Введіть 3 число:" ,IDC_STATIC,13,55,100,8

EDITTEXT IDC_VALUE3,83,53,40,14,ES_AUTOHSCROLL

LTEXT "Введіть 4 число:" ,IDC_STATIC,13,75,100,8

EDITTEXT IDC_VALUE4,83,73,40,14,ES_AUTOHSCROLL

}

«dial_4.rc»

IDD_SUM_ROW DIALOG 0, 0, 250, 100

STYLE WS_VISIBLE | WS_TABSTOP |WS_OVERLAPPED

CAPTION "Знаходження середньо-арифметичного"

FONT 14, "Times New Roman"

{

DEFPUSHBUTTON "Рахувати",IDC_COUNT,3,40,32,12, BS_RIGHTBUTTONPUSHBUTTON "Очистити",IDC_CLEAR,37,40,35,12

PUSHBUTTON "Вихід",IDC_EXIT,73,40,25,12

PUSHBUTTON "Вставити",IDC_INSERT_V,100,40,30,12

LTEXT "Введіть X = " ,IDC_STATIC,3,5,100,8

EDITTEXT IDC_VALUE1,83,5,40,9,ES_AUTOHSCROLL

LTEXT "Введіть точність(EPS) = " ,IDC_STATIC,3,20,100,8

EDITTEXT IDC_VALUE2,83,20,40,9,ES_AUTOHSCROLL

}

«res.rc»

ICON2 ICON "icon7.ico"

CURSOR1 CURSOR "main_cur.cur"