Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Преподаватель

Отчет

По учебной практике

 

студента 1 курса 8 группы

 

 

Преподаватель

Мушко Вилена Владимировна

доцент

кафедры

технологий программирования

 

 

Минск, 2016

Задача №1

Условие: Использование цепочечных команд языка Ассемблер. Задан текстовый файл Input.txt, состоящий из слов и некоторое предложение. Разделителями между словами является некоторое множество знаков препинания. Найти строки, в которых встречается данное предложение, продублировать первое и последнее слова предложений. Результатзаписать в новый файл Output.txt. Упорядочить слова в искомых предложениях по убыванию длин слов, результат сортировки записать в файл Out_sort.txt.

 

Код:

Файл main.cpp:

 

#include < iostream>

#include < cstring>

#include < fstream>

using namespace std;

 

int strlen1(char*a)

{

int c;

__asm

{

cld;

mov esi, a

mov edi, esi

mov ecx, 1000

xor al, al

repne scasb

sub edi, esi

dec edi

mov c, edi

}

return c;

}

 

void strcat1(char*a, char*b)

{

_asm

{

cld;

mov esi, a

push esi

call strlen1

add esp, 4

 

mov edi, a

add edi, eax

 

mov esi, b

push esi

call strlen1

add esp, 4

 

mov ecx, eax

rep movsb

mov byte ptr [edi], 0

}

}

 

void strcpy1(char*a, char*b)

{

_asm

{

cld;

mov edi, a

 

mov esi, b

push esi

call strlen1

add esp, 4

 

mov ecx, eax

rep movsb

mov byte ptr [edi], 0

}

}

 

void strncpy1(char*a, char*b, int n)

{

_asm

{

cld;

mov edi, a

 

mov esi, b

 

mov ecx, n

rep movsb

mov byte ptr [edi], 0

}

}

 

void sortpodlin(char*a, int N)

{

char*b=new char[N];

for (int i=0; i< N; i++) b[i]=NULL;

for (int i=N; i> 0; i--)

{

char*d=new char[N];

strcpy1(d, a);

for(char*p=strtok(d, ".,:; -_!? "); p; p=strtok(NULL, ".,:; -_!? "))

{

if (strlen1(p)==i)

{

strcat1(b, p);

strcat1(b, " ");

}

}

}

strcpy1(a, b);

}

 

int kolvo(FILE*b)

{

int a=0;

char ch;

b=fopen(" Input.txt", " r");

while ((ch = fgetc(b))! = EOF) a++;

return a;

}

 

 

void reverse(char*a, int n)

{

for(int i=0; i< n/2; i++){

char temp=a[i];

a[i]=a[n-i-1];

a[n-i-1]=temp;

}

}

 

void sdvigvlevo(char*a, int n, int k)

{

reverse(& a[0], k);

reverse(& a[k], n-k);

reverse(a, n);

}

 

int main()

{

FILE*b;

b=fopen(" Input.txt", " r");

ofstream file;

file.open (" Output.txt");

int dl=kolvo(b);

char*d=new char[dl];

char*n1=new char[dl];

for (int i=0; i< 100; i++) d[i]=NULL;

cout< < " Input sentence: ";

cin.getline(d, 100);

strcpy1(n1, d);

 

int k=0, q=1, q2=0, u=0, y=0, a1=0, a2=0, a3=0;

char*c=new char[dl];

char*e=new char[dl];

char*f=new char[dl];

char*g=new char[dl];

char*j=new char[dl];

char*l=new char[dl];

char*m=new char[dl];

char*n=new char[dl];

char*b1=new char[dl];

for (int i=0; i< dl; i++)

{

c[i]=NULL;

e[i]=NULL;

f[i]=NULL;

g[i]=NULL;

j[i]=NULL;

m[i]=NULL;

b1[i]=NULL;

}

 

strcpy1(n, d);

strcpy1(j, d);

strcpy1(l, d);

ofstream file12;

file12.open (" Output.txt");

while(fgets(c, dl, b)! =NULL)

{

for (char*h=strtok(d, ".,:;!? +-"); h; h=strtok(NULL, ".,:;!? +-"))

{

a2++;

}

strcpy1(d, n);

 

 

strcpy1(b1, c);

for (int i=0; i< strlen1(c); i++)

{

if (strlen1(d)==y) break;

sdvigvlevo(c, strlen(c), 1);

for (int i2=0; i2< strlen1(d); i2++)

{

if(c[i2]==d[i2]) k++;

}

if (k> y) y=k;

k=0;

 

}

 

if(y==strlen1(d)& & a2> 1)

{

for (char*p=strtok(d, ".,:;!? +-"); p, q< 2; p=strtok(NULL, ".,:;!? +-"))

{

if(q==1)

{

strcat1(e, p);

strcat1(e, " ");

strcat1(e, p);

strcat1(e, " ");

 

}

 

q++;

reverse(j, strlen1(j));

int i1=0;

while((j[i1]> 31& & j[i1]< 48)||(j[i1]> 57& & j[i1]< 64))

{

q2++;

i1++;

}

for (char*z=strtok(j, ".,:;!? +-"); z, q< 3; z=strtok(NULL, ".,:;!? +-"))

{

if (q==2)

{

reverse(l, strlen1(l));

strncpy1(g, l, strlen1(l)-strlen1(p)-1);

reverse(g, strlen1(g));

strncpy1(m, g, strlen1(g)-strlen1(z)-q2);

strcat1(e, m);

reverse(l, strlen1(l));

for (int i=0; i< dl; i++) g[i]=NULL;

reverse(z, strlen1(z));

strcat1(e, z);

strcat1(e, " ");

strcat1(e, z);

q++;

reverse(l, strlen1(l));

strncpy1(g, l, q2);

reverse(g, strlen1(g));

strcat1(e, g);

a1++;

}

}

}

}

if(y==strlen1(d)& & a2==1)

{

q=5;

a3++;

}

 

 

u++;

if (q==3) file12< < " Number of string with the desired sentence: " < < u< < endl< < " String from file: " < < b1< < " Modified sentence: " < < e< < endl< < endl;

if (q==5) file12< < " Number of string with the desired word: " < < u< < endl< < " String from file: " < < b1< < endl;

k=0;

y=0;

q=1;

q2=0;

a2=0;

for (int i=0; i< dl; i++)

{

d[i]=NULL;

c[i]=NULL;

e[i]=NULL;

f[i]=NULL;

g[i]=NULL;

j[i]=NULL;

m[i]=NULL;

}

 

strcpy1(d, n);

strcpy1(l, n);

strcpy1(j, n);

 

 

}

if (a1) cout< < " Desired sentence is founded in file." < < endl;

if (a3& & strlen1(b1)> 1) cout< < " There no such sentence in file, but there such word." < < endl;

if (a3& & strlen1(b1)==1) cout< < " There no such sentence in file, but there such letter." < < endl;

else cout< < " There no such sentence, word or letter in file." < < endl;

return 0;

}

 

Скриншоты:

 

 



Задача №2

Условие: Использование команд сопроцессора языка Ассемблер.

Вычисление функций. Вычислить: S= при заданном m, если х изменяется от a до b с шагом h. Результаты получить в виде таблицы.

 

 

Код:

Файл Row.h:

#ifndef _ROW

#define _ROW

 

double shx(double x);

double chx(double x);

double tanhx(double x);

#endif /*_ROW*/

 

Файл Row.cpp:

 

 


#include " Row.h"

 

double shx(double x)

{

int u1;

double sum=x, pr=x, e=0.0005, n=0, a, b=2, c=3, y, z, u2;

x*=x;

 

_asm

{

_2:

fld pr

fabs

fst u2;

ffree st

 

fld u2

fld e

fdiv

fistp u1

ffree st

 

mov eax, u1

cmp eax, 1

jl _1

ffree st

 

fld n

fld b

fmul

fst y

ffree st

 

fld y

fld b

fadd

fst y

ffree st

 

fld n

fld b

fmul

fst z

ffree st

 

fld z

fld c

fadd

fst z

ffree st

 

 

fld y

fld z

fmul

fst y

ffree st

 

fld x

fld y

fdiv

fst a

ffree st

 

fld pr

fld a

fmul

fst pr

ffree st

 

fld pr

fld sum

fadd

fst sum

ffree st

 

fld1

fld n

fadd

fst n

ffree st

 

jmp _2

_1:

}

return sum;

}

double chx(double x)

{

int u1;

double sum=1, pr=1, e=0.00005, n=0, a, b=1, c=2, y, z, u2, b2=2;

x*=x;

_asm

{

_2:

fld pr

fabs

fst u2;

ffree st

 

fld u2

fld e

fdiv

fistp u1

ffree st

 

mov eax, u1

cmp eax, 1

jl _1

ffree st

 

fld n

fld b2

fmul

fst y

ffree st

 

fld y

fld b

fadd

fst y

ffree st

 

fld n

fld b2

fmul

fst z

ffree st

 

fld z

fld c

fadd

fst z

ffree st

 

fld y

fld z

fmul

fst y

ffree st

 

fld x

fld y

fdiv

fst a

ffree st

 

fld pr

fld a

fmul

fst pr

ffree st

 

fld pr

fld sum

fadd

fst sum

ffree st

 

fld1

fld n

fadd

fst n

ffree st

 

jmp _2

_1:

}

return sum;

}

double tanhx(double x) {

double tan=shx(x)/chx(x);

return tan;

}


Файл lab 2 asm.cpp:

#include < iostream>

#include < iomanip>

#include < cmath>

#include < fstream>

#include " Row.h"

using namespace std;

int main()

{

double x, n, p;

double s3=0, s4=0, m; double const pi=3.14159265358979323846264338327950288419716;

ifstream in(" data.txt");

double a, b, h;

in > > a > > b > > h;

 

cout< < " Vvedite znachenie m: ";

cin> > m;

ofstream out(" output.txt");

out< < " ___________________________________" < < endl< < '|'< < setw(10)< < " x*2*n" < < '|'< < setw(10)< < " po myprog" < < " " < < '|'< < setw(10)< < " po math" < < '|'< < endl< < " ===================================" < < endl;

for(x=a*pi/180; x< b*pi/180; x+=h*pi/180)

{

n=m;

for (n; n> =1; n--)

{

p=x*2*n;

s4+=tanhx(x*2*n)*((2*n)/((2*n-1)*(2*n+1)));

s3+=tanh(x*2*n)*((2*n)/((2*n-1)*(2*n+1)));

}

out< < '|'< < setw(10)< < setprecision(5)< < fixed< < p< < '|'< < setprecision(5)< < setw(10)< < fixed< < s4< < " " < < '|'< < setw(10)< < setprecision(5)< < fixed< < s3< < '|'< < endl< < " ===================================" < < endl; s3=0; s4=0;

}

return 0;

}

 

Скриншоты:


 



Задача №4

Условие: Выполнить любую свою Лаб раб из 1 семестра используя Win API.

1 Найти N пар взаимно-простых натуральных чисел.

2 Найти k-ое простое число в арифметической прогрессии 11, 21, 31, 41, 51, …

 

Код:

Файл main.cpp:


// GT_HelloWorldWin32.cpp

// compile with: /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS /c

 

#include < windows.h>

#include < stdlib.h>

#include < string.h>

#include < tchar.h>

#include < cstring>

#include < stdio.h>

#include < fstream>

#include < cmath>

 

#define IDC_RHS 114

#define IDC_LHS 115

#define IDC_RESULT 116

#define IDC_RESULT1 120

#define IDC_ADD1 117

#define IDC_SUB1 118

#define IDC_MUL1 119

 

int nod(int a, int b)

{

_asm

{

mov eax, a

mov ebx, b

_2:

cmp eax, ebx

je _3

cmp eax, ebx

jl _1

sub eax, ebx

jne _2

_1:

sub ebx, eax

cmp eax, ebx

jne _2

_3:

mov a, eax

}

return a;

}

 

bool prost(unsigned int a)

{

int q1=0, q2, q3, d, d2=1, d3=0;

bool d1;

_asm

{

mov eax, a

mov q2, eax

mov ebx, 2

mov q3, ebx

cmp eax, 4294967280

jl _4

_2:

cmp eax, ebx

je _3

cmp eax, ebx

jl _1

sub eax, ebx

jne _2

_1:

sub ebx, eax

cmp eax, ebx

jne _2

_3:

add q1, eax

mov eax, q2

inc q3

mov ebx, q3

cmp eax, ebx

jne _2

sub eax, 2

cmp eax, q1

je _5

mov edx, 0

mov d, edx

jmp _4

_5:

mov edx, 1

mov d, edx

 

_4:

}

d1=(bool)d;

return d1;

}

 

 

enum operation{ADD, SUB, MUL, REM};

 

// Global Variables:

operation op=ADD;

int opt=0;

TCHAR number1[100];

char *number=new char[100];

char *ok=new char[10];

HWND USPEH;

HWND USPEH1;

HWND uspeh;

// The main window class name.

static TCHAR szWindowClass[] = _T(" win32app");

 

// The string that appears in the application's title bar.

static TCHAR szTitle[] = _T(" Win32 Guided Tour Application");

 

HINSTANCE hInst;

 

// Forward declarations of functions included in this code module:

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

 

int WINAPI WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

 

for(int i=0; i< 10; i++) ok[i]=NULL;

for(int i=0; i< 100; i++) number[i]=NULL;

 

WNDCLASSEX wcex;

 

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

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

wcex.lpszMenuName = NULL;

wcex.lpszClassName = szWindowClass;

wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

 

if (! RegisterClassEx(& wcex))

{

MessageBox(NULL,

_T(" Call to RegisterClassEx failed! "),

_T(" Win32 Guided Tour"),

NULL);

 

return 1;

}

 

hInst = hInstance; // Store instance handle in our global variable

 

 

HWND hWnd = CreateWindow(

szWindowClass,

szTitle,

WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,

CW_USEDEFAULT, CW_USEDEFAULT,

300, 300,

NULL,

NULL,

hInstance,

NULL

);

 

if (! hWnd)

{

MessageBox(NULL,

_T(" Call to CreateWindow failed! "),

_T(" Win32 Guided Tour"),

NULL);

 

return 1;

}

 

// The parameters to ShowWindow explained:

// hWnd: the value returned from CreateWindow

// nCmdShow: the fourth parameter from WinMain

ShowWindow(hWnd,

nCmdShow);

UpdateWindow(hWnd);

 

// Main message loop:

MSG msg;

while (GetMessage(& msg, NULL, 0, 0))

{

TranslateMessage(& msg);

DispatchMessage(& msg);

}

 

return (int) msg.wParam;

}

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

int wmId, wmEvent;

PAINTSTRUCT ps;

HDC hdc;

 

switch (message)

{

case WM_COMMAND:

wmId = LOWORD(wParam);

wmEvent = HIWORD(wParam);

// Parse the menu selections:

switch (wmId)

{

 

case IDC_ADD1:

{

int c=0, d=0 BOOL success=false;

int k=GetDlgItemInt(hWnd, IDC_LHS, & success, true);

d=GetDlgItemInt(hWnd, IDC_RHS, & success, true);

for (int i = 2; i < d; ++i)

{ for (int j =2; j < i; ++j)

{

if (nod(i, j) == 1)

{

if (c==k) continue;

c++;

 

sprintf(ok, " %d", i);

strcat(number, ok);

strcat(number, " ");

sprintf(ok, " %d", j);

strcat(number, ok);

strcat(number, " \n");

}

if (c==k) continue;

}

if (c==k) continue;

}

 

 

MessageBox(hWnd, number, " number", NULL);

for(int i=0; i< 100; i++) number[i]=NULL;

break;

}

 

 

case IDC_SUB1:

{

int c=0, d=0, k;

BOOL success=false;

k=GetDlgItemInt(hWnd, IDC_LHS, & success, true);

for (unsigned int a=11; a< 4294967295; a+=10) {

if(prost(a)) c++;

if (c==k)

{

sprintf(ok, " %d", k);

strcat(number, ok);

sprintf(ok, " %d", a);

strcat(number, " oe prostoe chislo v dannoi posledovatelnosti eto: ");

strcat(number, ok);

strcat(number, " \n");

 

MessageBox(hWnd, number, " shutka", NULL);

for(int i=0; i< 100; i++) number[i]=NULL;

break;

 

}

}

}

 

 

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

case WM_DESTROY:

PostQuitMessage(0);

break;

case WM_CREATE:

CreateWindowEx(WS_EX_CLIENTEDGE, TEXT(" BUTTON"), TEXT(" +"),

WS_CHILD|WS_VISIBLE,

115, 45, 30, 25, hWnd, (HMENU)IDC_ADD1, GetModuleHandle(NULL), NULL);

 

CreateWindowEx(WS_EX_CLIENTEDGE, TEXT(" BUTTON"), TEXT(" -"),

WS_CHILD|WS_VISIBLE,

115, 15, 30, 25, hWnd, (HMENU)IDC_SUB1, GetModuleHandle(NULL), NULL);

USPEH= CreateWindowEx(WS_EX_CLIENTEDGE, TEXT(" EDIT"), TEXT(" Do kakogo"),

WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|WS_TABSTOP,

20, 45, 85, 25, hWnd, (HMENU)IDC_RHS, GetModuleHandle(NULL), NULL);

USPEH1=CreateWindowEx(WS_EX_CLIENTEDGE, TEXT(" EDIT"), TEXT(" Skolko par"),

WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|WS_TABSTOP,

20, 10, 85, 25, hWnd, (HMENU)IDC_LHS, GetModuleHandle(NULL), NULL);

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

Cкриншоты:

 

 

 

 

Задача №5

Условие: Выполнить любую свою Лаб раб из 1 семестра используя Win API

 

Вычисление функций. Вычислить: S= при заданном m, если х изменяется от a до b с шагом h. Результаты получить в виде таблицы.

 

 

Код:

Файл main.cpp:

 


#include < windows.h>

#include < stdlib.h>

#include < string.h>

#include < tchar.h>

#include < cstring>

#include < stdio.h>

#include< iostream>

#include < fstream>

#include < cmath>

using namespace std;

 

#define IDC_RHS 114

#define IDC_LHS 115

#define IDC_RESULT 116

#define IDC_RESULT1 120

#define IDC_ADD1 117

#define IDC_SUB1 118

#define IDC_MUL1 119

 

 

double shx(double x)

{

int u1;

double sum=x, pr=x, e=0.0005, n=0, a, b=2, c=3, y, z, u2;

x*=x;

 

_asm

{

_2:

fld pr

fabs

fst u2;

ffree st

 

fld u2

fld e

fdiv

fistp u1

ffree st

 

mov eax, u1

cmp eax, 1

jl _1

ffree st

 

fld n

fld b

fmul

fst y

ffree st

 

fld y

fld b

fadd

fst y

ffree st

 

fld n

fld b

fmul

fst z

ffree st

 

fld z

fld c

fadd

fst z

ffree st

 

 

fld y

fld z

fmul

fst y

ffree st

 

fld x

fld y

fdiv

fst a

ffree st

 

fld pr

fld a

fmul

fst pr

ffree st

 

fld pr

fld sum

fadd

fst sum

ffree st

 

fld1

fld n

fadd

fst n

ffree st

 

jmp _2

_1:

}

return sum;

}

 

double chx(double x)

{

int u1;

double sum=1, pr=1, e=0.00005, n=0, a, b=1, c=2, y, z, u2, b2=2;

x*=x;

 

_asm

{

_2:

fld pr

fabs

fst u2;

ffree st

 

fld u2

fld e

fdiv

fistp u1

ffree st

 

mov eax, u1

cmp eax, 1

jl _1

ffree st

 

fld n

fld b2

fmul

fst y

ffree st

 

fld y

fld b

fadd

fst y

ffree st

 

fld n

fld b2

fmul

fst z

ffree st

 

fld z

fld c

fadd

fst z

ffree st

 

 

fld y

fld z

fmul

fst y

ffree st

 

fld x

fld y

fdiv

fst a

ffree st

 

fld pr

fld a

fmul

fst pr

ffree st

 

fld pr

fld sum

fadd

fst sum

ffree st

 

fld1

fld n

fadd

fst n

ffree st

 

jmp _2

_1:

}

return sum;

}

 

double tanhx(double x

{

double tan=shx(x)/chx(x); return tan}


 

enum operation{ADD, SUB, MUL, REM};

 

// Global Variables:

operation op=ADD;

int opt=0;

TCHAR number1[100];

char *number=new char[100];

char *ok=new char[10];

char *q4=new char[100];

HWND USPEH;

HWND USPEH1;

HWND uspeh;

// The main window class name.

static TCHAR szWindowClass[] = _T(" win32app");

 

// The string that appears in the application's title bar.

static TCHAR szTitle[] = _T(" Win32 Guided Tour Application");

 

HINSTANCE hInst;

 

// Forward declarations of functions included in this code module:

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

 

int WINAPI WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

 

for(int i=0; i< 10; i++) ok[i]=NULL;

for(int i=0; i< 100; i++) number[i]=NULL;

 

WNDCLASSEX wcex;

 

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

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

wcex.lpszMenuName = NULL;

wcex.lpszClassName = szWindowClass;

wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

 

if (! RegisterClassEx(& wcex))

{

MessageBox(NULL,

_T(" Call to RegisterClassEx failed! "),

_T(" Win32 Guided Tour"),

NULL);

 

return 1;

}

 

hInst = hInstance;

HWND hWnd = CreateWindow(

szWindowClass,

szTitle,

WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,

CW_USEDEFAULT, CW_USEDEFAULT,

300, 300,

NULL,

NULL,

hInstance,

NULL

);

 

if (! hWnd)

{

MessageBox(NULL,

_T(" Call to CreateWindow failed! "),

_T(" Win32 Guided Tour"),

NULL);

 

return 1;

}

 

ShowWindow(hWnd,

nCmdShow);

UpdateWindow(hWnd);

 

 

MSG msg;

while (GetMessage(& msg, NULL, 0, 0))

{

TranslateMessage(& msg);

DispatchMessage(& msg);

}

 

return (int) msg.wParam;

}

 

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

int wmId, wmEvent;

PAINTSTRUCT ps;

HDC hdc;

 

switch (message)

{

case WM_COMMAND:

wmId = LOWORD(wParam);

wmEvent = HIWORD(wParam);

// Parse the menu selections:

switch (wmId)

{

 

case IDC_SUB1:

{

BOOL success=false;

 

for(int i=0; i< 100; i++) q4[i]=NULL;

double x, n, p;

double s3=0, s4=0, m; double const pi=3.14159265358979323846264338327950288419716;

ifstream in(" data.txt");

double a, b, h;

in > > a > > b > > h;

 

m=GetDlgItemInt(hWnd, IDC_LHS, & success, true);

 

strcat(q4, " myprog | po math \n");

for(x=a*pi/180; x< b*pi/180; x+=h*pi/180)

{

n=m;

 

for (n; n> =1; n--)

{

p=x*2*n;

s4+=tanhx(x*2*n)*((2*n)/((2*n-1)*(2*n+1)));

s3+=tanh(x*2*n)*((2*n)/((2*n-1)*(2*n+1)));

}

char ok[20];

for(int i=0; i< 20; i++) ok[i]=NULL;

sprintf(ok, " %f", s3);

strcat(q4, ok);

strcat(q4, " |");

sprintf(ok, " %f", s4);

strcat(q4, ok);

strcat(q4, " \n");

 

s3=0; s4=0;

}

MessageBox(hWnd, q4, " number", NULL);

for(int i=0; i< 100; i++) q4[i]=NULL;

break;

 

 

}

 

 

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

 

 

case WM_DESTROY:

PostQuitMessage(0);

break;

case WM_CREATE:

 

CreateWindowEx(WS_EX_CLIENTEDGE, TEXT(" BUTTON"), TEXT(" -"),

WS_CHILD|WS_VISIBLE,

115, 15, 30, 25, hWnd, (HMENU)IDC_SUB1, GetModuleHandle(NULL), NULL);

 

USPEH1=CreateWindowEx(WS_EX_CLIENTEDGE, TEXT(" EDIT"), TEXT(" m"),

WS_CHILD|WS_VISIBLE|ES_AUTOHSCROLL|WS_TABSTOP,

20, 10, 85, 25, hWnd, (HMENU)IDC_LHS, GetModuleHandle(NULL), NULL);

 

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

 

 

Скриншоты:

 

 

 

Задача №6

Условие: Разработать техническое задание для решения любой задачи.

Продемонстрировать работу, применить анимацию, используя функции Win Api.

Примерный вариант:

1. Объявить абстрактный базовый класс «Фигура на плоскости», моделирующий общие свойства и поведение геометрических фигур. Включить в объявления классов следующее поля данных:

· название фигуры (отрезок, квадрат, круг и т.д.);

· одно или несколько полей типа Point, характеризующие положение фигуры на плоскости. Например: центр круга (одно поле данных) или два поля для прямоугольника и квадрата (верхний левый и правый нижний углы фигуры);

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

В класс наследник включить следующие методы:

· конструктор по умолчанию, конструктор с формальными параметрами и конструктор копирования, а также виртуальный деструктор;

· виртуальные методы для вычисления параметров объекта (периметра иплощади фигуры с учетом ее вида; площади поверхностей и объем тела);

· виртуальный метод для отображения объекта на экране. В соответствующей функции-члене класса достаточно вывести текст «Рисунок < name> < координаты>», где name - название фигуры.

· виртуальный метод для моделирования перемещения фигуры на плоскости (сдвиг центра окружности или вершин четырехугольника); В соответствующей функции-члене класса достаточно выводить текст «Движение < name> < координаты>», где name - название фигуры.

· виртуальный метод для моделирования сжатия или растяжения фигуры (увеличение радиуса круга, уменьшение стороны квадрата).

В приведенных формулах S – площадь, Р (или р) – периметр фигуры.

Выполнить тестирование методов классов, используя их объекты для класса «Правильный многоугольник». Создать объект класса, вписанный в окружность радиуса R. Вычислить периметр объекта-окружности и объекта-многоугольника. Сторона правильного многоугольника an = 2* R* sin (π /n).

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

Объявления классов иерархии разместить в заголовочном файле, определения методов – в отдельном файле и главную функцию программы разместить в третьем файле.

Код:

 


Файл Figure.h:

#include < windows.h>

#include < stdlib.h>

#include " Point2d.h"

 

class figura

{

 

};

 

class otrezok: public figura

{

private:

int x1, y1, x2, y2;

public:

otrezok();

void draw(int a, int b, int c, int d, HDC hdc);

void moveleft(HDC hdc);

void moveright(HDC hdc);

void moveup(HDC hdc);

void movedown(HDC hdc);

void ydalit(HDC hdc);

void rashirposhir(HDC hdc);

void rashirpovis(HDC hdc);

void suzitposhir(HDC hdc);

void suzitpovis(HDC hdc);

double dlina();

 

};

class krug: public figura

{

private:

Point2d center;

int r;

public:

krug();

void draw(int a, int b, int r1, HDC hdc);

void moveleft(HDC hdc);

void moveright(HDC hdc);

void moveup(HDC hdc);

void movedown(HDC hdc);

void ydalit(HDC hdc);

void uvelichit(HDC hdc);

void umenshit(HDC hdc);

double square();

double perimetr();

int getX();

int getY();

int getR();

 

};

class rectangle: public figura

{

private:

int x1, y1, x2, y2;

public:

rectangle();

void draw(int a, int b, int c, int d, HDC hdc);

void moveleft(HDC hdc);

void moveright(HDC hdc);

void moveup(HDC hdc);

void movedown(HDC hdc);

void ydalit(HDC hdc);

void rashirposhir(HDC hdc);

void rashirpovis(HDC hdc);

void suzitposhir(HDC hdc);

void suzitpovis(HDC hdc);

int perimetr();

int square();

 

};

 

Файл Point2d.h:

#ifndef POINT2D_H

#define POINT2D_H

#include < iostream>

class Point2d

{

private:

double x, y;

public:

Point2d();

Point2d(double, double);

void Setx(double);

double Getx() const;

void Sety(double);

double Gety()const;

double module()const;

Point2d operator-() const;

Point2d& operator++();

Point2d operator++(int);

Point2d operator+(const Point2d&)const;

Point2d operator*(Point2d&);

bool operator==(const Point2d&)const;

bool operator! =(const Point2d&)const;

Point2d operator*(double)const;

friend Point2d operator*(double, Point2d&);

friend std:: ostream& operator< < (std:: ostream&, const Point2d&);

operator double();

};

#endif

 

Файл Point2d.cpp:

#include " Point2d.h"

#include < cmath>

Point2d:: Point2d()

{

x = 0;

y = 0;

}

Point2d:: Point2d(double X_AX, double Y_AX): x(X_AX), y(Y_AX){}

void Point2d:: Sety(double Y_AX)

{

y = Y_AX;

}

double Point2d:: Gety()const

{

return y;

}

void Point2d:: Setx(double X_AX)

{

x = X_AX;

}

double Point2d:: Getx()const

{

return x;

}

double Point2d:: module()const

{

return sqrt(x*x + y*y);

}

Point2d Point2d:: operator-()const

{

return Point2d(-x, -y);

}

Point2d& Point2d:: operator++()

{

++x;

++y;

return *this;

}

Point2d Point2d:: operator++(int a)

{

Point2d temp=*this;

x++;

y++;

return temp;

}

Point2d Point2d:: operator+(const Point2d& p)const

{

return Point2d(x + p.x, y + p.y);

}

Point2d Point2d:: operator*(Point2d& p)

{

return Point2d(x * p.x, y * p.y);

}

bool Point2d:: operator==(const Point2d& p)const

{

return x == p.x& & y == p.y;

}

bool Point2d:: operator! =(const Point2d& p)const

{

return! (this)-> operator==(p);

}

Point2d Point2d:: operator*(double d)const

{

return Point2d(x*d, y*d);

}

Point2d operator*(double a, Point2d& p)

{

return p.operator*(a);

}

std:: ostream& operator< < (std:: ostream& os, const Point2d& p)

{

os < < " (" < < p.x< < ", " < < p.y< < ")";

return os;

}

Point2d:: operator double()

{

return module();

}

 

Файл Otrezok.cpp:

#include " Figure.h"

#include < windows.h>

#include < stdlib.h>

#include < stdio.h>

#include < cmath>

otrezok:: otrezok()

{

 

}

void otrezok:: draw(int a, int b, int c, int d, HDC hdc)

{

// hdc=GetDC(hWnd);

x1=a;

y1=b;

x2=c;

y2=d;

MoveToEx(hdc, x1, y1, NULL);

LineTo(hdc, x2, y2);

}

void otrezok:: moveleft(HDC hdc)

{

 

//hdc=GetDC(hWnd);

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

x1--;

x2--;

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

}

void otrezok:: moveright(HDC hdc)

{

//hdc=GetDC(hWnd);

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

MoveToEx(hdc, x1, y1, NULL);

LineTo(hdc, x2, y2);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

x1++;

x2++;

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

}

void otrezok:: moveup(HDC hdc)

{

//hdc=GetDC(hWnd);

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

MoveToEx(hdc, x1, y1, NULL);

LineTo(hdc, x2, y2);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

y1--;

y2--;

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

}

void otrezok:: movedown(HDC hdc)

{

//hdc=GetDC(hWnd);

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

MoveToEx(hdc, x1, y1, NULL);

LineTo(hdc, x2, y2);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

y1++;

y2++;

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

}

void otrezok:: ydalit(HDC hdc)

{

HPEN a;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

draw(0, 0, 0, 0, hdc);

DeleteObject(a);

}

void otrezok:: rashirposhir(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

MoveToEx(hdc, x1, y1, NULL);

LineTo(hdc, x2, y2);

DeleteObject(a);

if (x1< x2)

{

x1--;

x2++;

}

else

{

x2--;

x1++;

}

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

 

}

void otrezok:: rashirpovis(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

MoveToEx(hdc, x1, y1, NULL);

LineTo(hdc, x2, y2);

DeleteObject(a);

if (y1< y2)

{

y1--;

y2++;

}

else

{

y2--;

y1++;

}

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

 

}

void otrezok:: suzitposhir(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

MoveToEx(hdc, x1, y1, NULL);

LineTo(hdc, x2, y2);

DeleteObject(a);

if (x1< x2)

{

x1++;

x2--;

}

else

{

x2++;

x1--;

}

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

 

}

void otrezok:: suzitpovis(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

MoveToEx(hdc, x1, y1, NULL);

LineTo(hdc, x2, y2);

DeleteObject(a);

if (y1< y2)

{

y2--;

y1++;

}

else

{

y1--;

y2++;

}

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

 

}

double otrezok:: dlina()

{

double s=sqrt((double)((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));

return s;

}

Файл Krug.cpp:

#include " Figure.h"

#include < windows.h>

#include < stdlib.h>

#include < stdio.h>

#include " Point2d.h"

 

krug:: krug()

{

r=0;

}

void krug:: draw(int a, int b, int r1, HDC hdc)

{

center.Setx(a);

center.Sety(b);

r=r1;

Ellipse(hdc, a-r1, b-r1, a+r1, b+r1);

}

void krug:: moveleft(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

int x1=center.Getx();

x1--;

center.Setx(x1);

draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(b);

 

}

void krug:: moveright(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

int x1=center.Getx();

x1++;

center.Setx(x1);

draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(b);

}

void krug:: moveup(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

int y1=center.Gety();

y1--;

center.Sety(y1);

draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(b);

}

void krug:: movedown(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

int y1=center.Gety();

y1++;

center.Sety(y1);

draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(b);

}

void krug:: ydalit(HDC hdc)

{

HPEN a;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(center.Getx(), center.Gety(), r, hdc);

draw(0, 0, 0, hdc);

r=0;

DeleteObject(a);

}

void krug:: umenshit(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

if(r> 0)draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

if(r> 1)r--;

 

if(r> 0) draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(b);

}

void krug:: uvelichit(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

if(r> 0)draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

if(r> 0)r++;

if(r> 0) draw(center.Getx(), center.Gety(), r, hdc);

DeleteObject(b);

}

double krug:: square()

{

double s;

s=(double)r*(double)r*3.14159;

return s;

}

double krug:: perimetr()

{

double p;

p=(double)r*3.14159*2;

return p;

}

int krug:: getX()

{

return center.Getx();

}

int krug:: getY()

{

return center.Gety();

}

int krug:: getR()

{

return r;

}

 

Файл Rectangle.cpp:

#include " Figure.h"

#include < windows.h>

#include < stdlib.h>

#include < stdio.h>

 

rectangle:: rectangle()

{

x1=y1=x2=y2=0;

}

void rectangle:: draw(int a, int b, int c, int d, HDC hdc)

{

// hdc=GetDC(hWnd);

x1=a;

y1=b;

x2=c;

y2=d;

Rectangle(hdc, x1, y1, x2, y2);

}

void rectangle:: moveleft(HDC hdc)

{

 

//hdc=GetDC(hWnd);

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

x1--;

x2--;

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

}

void rectangle:: moveright(HDC hdc)

{

//hdc=GetDC(hWnd);

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

x1++;

x2++;

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

}

void rectangle:: moveup(HDC hdc)

{

//hdc=GetDC(hWnd);

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

y1--;

y2--;

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

}

void rectangle:: movedown(HDC hdc)

{

//hdc=GetDC(hWnd);

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

DeleteObject(a);

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

y1++;

y2++;

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

}

void rectangle:: ydalit(HDC hdc)

{

HPEN a;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

draw(0, 0, 0, 0, hdc);

DeleteObject(a);

}

void rectangle:: rashirposhir(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

DeleteObject(a);

if (x1< x2)

{

x1--;

x2++;

}

else

{

x2--;

x1++;

}

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

 

}

void rectangle:: rashirpovis(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

DeleteObject(a);

if (y1< y2)

{

y1--;

y2++;

}

else

{

y2--;

y1++;

}

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

 

}

void rectangle:: suzitposhir(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

DeleteObject(a);

if (x1< x2)

{

x1++;

x2--;

}

else

{

x2++;

x1--;

}

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

 

}

void rectangle:: suzitpovis(HDC hdc)

{

HPEN a;

HPEN b;

a=CreatePen(PS_SOLID, 1, RGB(255, 255, 255));

SelectObject(hdc, a);

draw(x1, y1, x2, y2, hdc);

DeleteObject(a);


if (y1< y2)

{

y2--;

y1++;

}

else

{

y1--;

y2++;

}

b=CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

SelectObject(hdc, b);

draw(x1, y1, x2, y2, hdc);

DeleteObject(b);

 

}

int modul1(int a)

{

if (a> =0) return a;

if (a< 0) return ((-1)*a);

}

int rectangle:: perimetr()

{

int p=2*modul1(x1-x2);

p+=2*modul1(y1-y2);

return p;

}

int rectangle:: square()

{

int s=modul1(x1-x2);

s*=modul1(y1-y2);

return s;

}

 

Файл main.cpp:

#include < windows.h>

#include < stdlib.h>

#include < string.h>

#include < tchar.h>

#include < cstring>

#include < stdio.h>

#include " Figure.h"

 

 

rectangle c1;

krug b1;

otrezok a1;

int value=0;

char number[100];

 

#define IDC_LEFT1 101

#define IDC_DRAW 102

#define IDC_X1 103

#define IDC_Y1 104

#define IDC_X2 105

#define IDC_Y2 106

#define IDC_RIGHT1 107

#define IDC_UP1 108

#define IDC_DOWN1 109

#define IDC_DRAWKRUG 110

#define IDC_RADIUS 111

#define IDC_CENTERX 112

#define IDC_CENTERY 113

#define IDC_SUZVIS 114

#define IDC_SUZSHIR 115

#define IDC_RASHIRVIS 116

#define IDC_RASHIRSHIR 117

#define IDC_UMENSHIT 118

#define IDC_UVELICHIT 119

#define IDC_DRAWRECT 120

#define IDC_X11 121

#define IDC_Y11 122

#define IDC_X22 123

#define IDC_Y22 124

#define IDC_ANIMATION 125

#define IDC_SQUARE 126

#define IDC_PERIMETR 127

 

// Global Variables:

 

 

HWND USPEH;

HWND USPEH1;

HWND uspeh;

 

static HMENU hMenu;

// The main window class name.

static TCHAR szWindowClass[] = _T(" win32app");

 

// The string that appears in the application's title bar.

static TCHAR szTitle[] = _T(" Win32 Guided Tour Application");

 

HINSTANCE hInst;

 

// Forward declarations of functions included in this code module:

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

 

int WINAPI WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

WNDCLASSEX wcex;

 

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

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

wcex.lpszMenuName = NULL;

wcex.lpszClassName = szWindowClass;

wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));

 

if (! RegisterClassEx(& wcex))

{

MessageBox(NULL,

_T(" Call to RegisterClassEx failed! "),

_T(" Win32 Guided Tour"),

NULL);

 

return 1;

}

 

hInst = hInstance; // Store instance handle in our global variable

HWND hWnd = CreateWindow(

szWindowClass,

szTitle,

WS_OVERLAPPEDWINDOW | WS_SYSMENU | WS_MINIMIZEBOX,

CW_USEDEFAULT, CW_USEDEFAULT,

800, 800,

NULL,

NULL,

hInstance,

NULL

);

 

HMENU hMainMenu = CreateMenu();

HMENU hPopMenuFile = CreatePopupMenu();

AppendMenu(hMainMenu, MF_STRING | MF_POPUP, (UINT)hPopMenuFile, (LPCSTR)" File");

 

 

if (! hWnd)

{

MessageBox(NULL,

_T(" Call to CreateWindow failed! "),

_T(" Win32 Guided Tour"),

NULL);

 

return 1;

}

ShowWindow(hWnd,

nCmdShow);

UpdateWindow(hWnd);

 

// Main message loop:

MSG msg;

while (GetMessage(& msg, NULL, 0, 0))

{

TranslateMessage(& msg);

DispatchMessage(& msg);

}

 

return (int) msg.wParam;

}

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

int wmId, wmEvent;

PAINTSTRUCT ps;

HDC hdc;

 

switch (message)

{

case WM_COMMAND:

wmId = LOWORD(wParam);

wmEvent = HIWORD(wParam);

// Parse the menu selections:

switch (wmId)

{

 

case IDC_DRAW:

{

value=1;

 

BOOL success=false;

int x1=GetDlgItemInt(hWnd, IDC_X1, & success, true);

int y1=GetDlgItemInt(hWnd, IDC_Y1, & success, true);

int x2=GetDlgItemInt(hWnd, IDC_X2, & success, true);

int y2=GetDlgItemInt(hWnd, IDC_Y2, & success, true);

hdc=GetDC(hWnd);

a1.draw(x1, y1, x2, y2, hdc);

b1.ydalit(hdc);

c1.ydalit(hdc);

 

break;

}

case IDC_LEFT1:

{

 

 

hdc=GetDC(hWnd);

for(int i=0; i< 10; i++)

{

Sleep(10);

switch(value)

{

case 1: a1.moveleft(hdc);

case 2: b1.moveleft(hdc);

case 3: c1.moveleft(hdc);

}

}

break;

}

case IDC_RIGHT1:

{

hdc=GetDC(hWnd);

for(int i=0; i< 10; i++)

{

Sleep(10);

switch(value)

{

case 1: a1.moveright(hdc);

case 2: b1.moveright(hdc);

case 3: c1.moveright(hdc);

}

}

break;

}

case IDC_UP1:

{

hdc=GetDC(hWnd);

for(int i=0; i< 10; i++)

{

Sleep(10);

switch(value)

{

case 1: a1.moveup(hdc);

case 2: b1.moveup(hdc);

case 3: c1.moveup(hdc);

}

}

break;

}

case IDC_DOWN1:

{

hdc=GetDC(hWnd);

 

for(int i=0; i< 10; i++)

{

Sleep(10);

switch(value)

{

case 1: a1.movedown(hdc);

case 2: b1.movedown(hdc);

case 3: c1.movedown(hdc);

}

}

break;

}

 

case IDC_SUZVIS:

{

 

 

hdc=GetDC(hWnd);

for(int i=0; i< 10; i++)

{

Sleep(10);

switch(value)

{

case 1: a1.suzitpovis(hdc); break;

case 3: c1.suzitpovis(hdc); break;

}

}

break;

}

case IDC_SUZSHIR:

{

hdc=GetDC(hWnd);

for(int i=0; i< 10; i++)

{

Sleep(10);

switch(value)

{

case 1: a1.suzitposhir(hdc); break;

case 3: c1.suzitposhir(hdc); break;

}

}

break;

}

case IDC_RASHIRSHIR:

{

hdc=GetDC(hWnd);

for(int i=0; i< 10; i++)

{

Sleep(10);

switch(value)

{

case 1: a1.rashirposhir(hdc); break;

case 3: c1.rashirposhir(hdc); break;

}

 

}

break;

}

case IDC_RASHIRVIS:

{

hdc=GetDC(hWnd);

 

for(int i=0; i< 10; i++)

{

Sleep(10);

switch(value)

{

case 1: a1.rashirpovis(hdc); break;

case 3: c1.rashirpovis(hdc); break;

}

}

break;

}

 

 

case IDC_DRAWKRUG:

{

value=2;

BOOL success=false;

int x1=GetDlgItemInt(hWnd, IDC_CENTERX, & success, true);

int y1=GetDlgItemInt(hWnd, IDC_CENTERY, & success, true);

int r1=GetDlgItemInt(hWnd, IDC_RADIUS, & success, true);

hdc=GetDC(hWnd);

b1.draw(x1, y1, r1, hdc);

a1.ydalit(hdc);

c1.ydalit(hdc);

 

break;

}

 

case IDC_UVELICHIT:

{

hdc=GetDC(hWnd);

for(int i=0; i< 10; i++)

{

Sleep(10);

b1.uvelichit(hdc);

}

break;

}

case IDC_UMENSHIT:

{

hdc=GetDC(hWnd);

 

for(int i=0; i< 10; i++)

{

Sleep(10);

b1.umenshit(hdc);

}

break;

}

 

case IDC_DRAWRECT:

{

value=3;

 

BOOL success=false;

int x1=GetDlgItemInt(hWnd, IDC_X11, & success, true);

int y1=GetDlgItemInt(hWnd, IDC_Y11, & success, true);

int x2=GetDlgItemInt(hWnd, IDC_X22, & success, true);

int y2=GetDlgItemInt(hWnd, IDC_Y22, & success, true);

hdc=GetDC(hWnd);

c1.draw(x1, y1, x2, y2, hdc);

a1.ydalit(hdc);

b1.ydalit(hdc);

 

break;

<== предыдущая лекция | следующая лекция ==>
Отдельные проблемы | Вечное Цветение




© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.