Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Встановлення програми та необхідні файли/каталогиСодержание книги
Поиск на нашем сайте Скопіювати в цільовий каталог файли: «LAB1.exe», «water.bmp», «Microb GRADE1 RUN.bmp», «Microb GRADE1.bmp», «Microb GRADE2 RUN.bmp», «Microb GRADE2.bmp», «Microb GRADE3 RUN.bmp», «Microb GRADE3.bmp». Запуск програми Для коректної роботи программи необхідно зберігати у одному каталозі із *.exe файлом наступні файли: 1. «Water.bmp» 2. «Microb GRADE1 RUN.bmp» 3. «Microb GRADE1.bmp» 4. «Microb GRADE2 RUN.bmp» 5. «Microb GRADE2.bmp» 6. «Microb GRADE3 RUN.bmp» 7. «Microb GRADE3.bmp» У випадку переміщення цих файлів або зміни їхньго імені правильна робота програми не гарантуєтся. Не рекомендуєтся вносити зміни у зміст файлів, правильна робота програми не гарантуєтся. Щоб запустити программу виконайте *.exeфайл. Користувацький інтерфейс Робота із програмою починаєтся із стандартними налаштуваннями, які включають в себе аудиторію, студентів та деканат(рис. 7.1).
Рисунок 7.1 – Початок роботи програми Для того, щоб змусити студентів рухатись, їх необхідно виділити. Для виділення студента кликніть по ньому лівою кнопкою миші. Виділені студенти обведені рамкою (рис. 7.2). Є можливість виділення декількох студентів.
Рисунок 7.2 – Виділення студентів Після виділення, студентом можна рухати: студента в аудиторії можна рухати стрілочками, у воді клавішами w/s. Студенти, що містяться у деканаті будуть автоматично рухатись вправо по треку відповідно до своїх можливостей. Для видалення студента, виділіть його і натисніть клавішу delete. Будьте уважні, ця команда видаляє усі виділені об’єкти. Щоб додати нового студента, натисніть клавішу Insert заповніть поля «Ім’я» та «Швидкість», оберіть тип студента і натисніть «Ок» (рис. 7.3). Новий студент з’явится у випадковому місці на робочій поверхні. Для швидкого створення студентів використовуйте клавіші 1/2/3.
Рисунок 7.3 – Діалогове вікно створення нового студента
ВИСНОВКИ
У ході розробки курсової роботи було визначено основні проблеми які стосуються обраної теми, розглянуто основні питання пов’язані з нею проаналізовано життя, та навчання студентів. Було досліджено різницю між мовами програмування С++, С# та Java і обрано С++, як мову, яка найкраще підходить для реалізації програми. Обрано WinAPI, як найбільш актуальну та вдалу форму розробки програми. Було вивчено базові принципи об’єктно-орієнтованого програмування, ієрархію класів, принципи поліморфізму, інкапсуляції, наслідування. Отримано основні навички та знання необхідні при роботі у WinAPI.
ПЕРЕЛІК ПОСИЛАНЬ
1. С.Прата. Язык программироваия С++. Лекции и упражнения, 6-е изд.:Пер. С англ.. – М.:ООО «И.Д.Вильямс», 2012. – 1248 с. 2. Isaac Azimov. I, Robot - NY.:Spectra, 1991. – 304 c. 3. Ч. Петзолд. Программирование для Windows 95. Том I. - Санкт – Петербург: BHV, 1997.- 495 c. 4. Шеховцов В. А. Операційні системи. – К.:Видавнича група BHV, 2005. – 576 c. 5. Страуструп, Бьярне. Макросы // Программирование: Принципы и практика использования C++ = Programming: Principles and Practice Using C++. — М.: ООО «И.Д. Вильямс», 2001. — С. 1065, 1066, 1133. — 1248 с.
ДОДАТКИ
Додаток А Лістинг модуля student.cpp #include "stdafx.h" #include "student.h" #include "class.h"
#define MAX_LOADSTRING 100
// Global Variables: HINSTANCE hInst; // current instance TCHAR szTitle[MAX_LOADSTRING]; // The title bar text TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// Forward declarations of functions included in this code module: ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine);
// TODO: Place code here. MSG msg; HACCEL hAccelTable;
// Initialize global strings LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_STUDENT, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance);
// Perform application initialization: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; }
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_STUDENT));
// Main message loop: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } }
return (int) msg.wParam; }
// // FUNCTION: MyRegisterClass() // // PURPOSE: Registers the window class. // // COMMENTS: // // This function and its usage are only necessary if you want this code // to be compatible with Win32 systems prior to the 'RegisterClassEx' // function that was added to Windows 95. It is important to call this function // so that the application will get 'well formed' small icons associated // with it. // ATOM MyRegisterClass(HINSTANCE hInstance) { 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_STUDENT)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = MAKEINTRESOURCE(IDC_STUDENT); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
return RegisterClassEx(&wcex); }
// // FUNCTION: InitInstance(HINSTANCE, int) // // PURPOSE: Saves instance handle and creates main window // // COMMENTS: // // In this function, we save the instance handle in a global variable and // create and display the main program window. // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd;
hInst = hInstance; // Store instance handle in our global variable
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd) { return FALSE; }
ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd);
return TRUE; }
// // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) // // PURPOSE: Processes messages for the main window. // // WM_COMMAND - process the application menu // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return // int n=10; int j=-1; // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
static bool first = true; int i0,x=0,y=0; if(first){ first=false;
arr = new student *[n]; for(int i=0;i<n;i++) arr[i]= new student(); }
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 IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break;
case WM_LBUTTONDOWN:{
int mx=LOWORD(lParam); int my=HIWORD(lParam);
for(int i=0;i<n;i++) arr[i]->activ(mx,my);
::InvalidateRect(hWnd, NULL, true); }break; case WM_KEYDOWN:{ switch(wParam) {
case VK_ESCAPE: for(int j=0;j<n;++j) arr[j]->esc();break;
case VK_UP: for(int i=0;i<n;++i) arr[i]->ruh("y",-5); break;
case VK_DOWN: for(int i=0;i<n;++i) arr[i]->ruh("y",5);; break;
case VK_LEFT: for(int i=0;i<n;++i) arr[i]->ruh("x",-5);; break;
case VK_RIGHT: for(int i=0;i<n;i++) arr[i]->ruh("x",5);; break;
case VK_DELETE:{
for(int i=0;i<n;i++) if(arr[i]->ret()==true)j=i;
if(j!=-1){ for(int i=j;i<n-1;++i)arr[i]=arr[i+1]; n--;j=-1;} } break;
}
::InvalidateRect(hWnd,NULL,true); }break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps);
for(int i=0;i<n;i++) arr[i]->DRAW(hdc); // TODO: Add any drawing code here... EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
// Message handler for about box. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE;
case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; }
Додаток Б Лістинг модуля student2.cpp #include "stdafx.h" #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h>
using namespace System;
class Student { public: int serBal, rik_naroj; float znannia_mov, weight; char Name[50]; int *referen;
void Zdawses();
Student operator-- () { rik_naroj--; return (*this); }
Student(int riknar, int serbal, float znmov) { referen = new int[2]; referen[1]=4+serbal; referen[0]=riknar * 5; printf ("\nKonstruktor vuklukano:\nVvedit' imya studenta z poperednimu parametramu:\n"); rik_naroj=riknar; znannia_mov=znmov; serBal=serbal; gets(Name); weight=0.4F; }
Student & operator= (Student &arg) { if(this == &arg) return (*this); delete []referen; referen = new int[2]; referen[0] = arg.referen[0]; referen[1] = arg.referen[1]; int le=strlen(Name), len2=strlen(arg.Name), kc=(le>len2)?le:len2; for(int i=0; i<kc; i++) { if(i<le) Name[i]=arg.Name[i]; else Name[i]='\0'; } return (*this); }
Student() { }
Student(const Student & arg) { serBal=arg.serBal; rik_naroj=arg.rik_naroj; znannia_mov=arg.znannia_mov; int le=strlen(Name), len2=strlen(arg.Name), kc=(le>len2)?le:len2; for(int i=0; i<kc; i++) { if(i<le) Name[i]=arg.Name[i]; else Name[i]='\0'; } referen = new int[2]; referen[0] = arg.referen[0]; referen[1] = arg.referen[1]; }
void about() { printf("student %s %i %.1f %i ",this->Name,rik_naroj,znannia_mov,serBal); } void about(short ll) { printf("student %s %i %.1f %i ((%i %i)\n",this->Name,rik_naroj+100,znannia_mov,serBal,ll<<3,!ll); }
friend Student operator*(Student &o1, Student &o2);
};
void Student::Zdawses() { } Student operator*(Student &o1, Student &o2) { Student tmp(o1.rik_naroj*o2.rik_naroj, o1.znannia_mov*o2.znannia_mov, o1.serBal+o2.serBal); return tmp; }
int main(array<System::String ^> ^args) { char vybMas='1', juven; int kolic1=0, kolic2=0, kilk, indeks, i; printf("Vvedy kilkist obyektiv:>"); kilk = Convert::ToInt32(Console::ReadLine()); int jj=9; Student *typ1 = new Student[kilk], **typ2 = new Student*[kilk]; bak: switch(getch()) { case 'l': printf("Masyv obyektiv\n"); if(vybMas=='1') { for(i=0;i<kolic1;i++) { typ1[i].about(); typ1[i].Zdawses(); puts(""); } } else { for(i=0;i<kolic2;i++) { typ2[i]->about(); typ2[i]--; puts(""); } } break; case 'x': goto end_g; case 's'://сортувати printf("Vvedy '1' dlia sort. po movah '3' dlia sortuvannia poci narojen\n"); bk: juven=getch(); if(juven!='1' && juven!='3') goto bk; int j; if(vybMas=='1') { for(i=0;i<kolic1;i++) for(j=1;j<kolic1;j++) if(juven=='1' && typ1[j].znannia_mov<typ1[j-1].znannia_mov || juven=='3' && typ1[j].rik_naroj<typ1[j-1].rik_naroj) { Student YYy = typ1[j]; typ1[j] = typ1[j-1]; typ1[j-1]=YYy; } } else { for(i=0;i<kolic2;i++) for(j=1;j<kolic2;j++) if(juven=='1' && typ2[j]->znannia_mov<typ2[j-1]->znannia_mov || juven=='3' && typ2[j]->rik_naroj<typ2[j-1]->rik_naroj) { Student *YYy = typ2[j]; typ2[j] = typ2[j-1]; typ2[j-1] = YYy; } } break; case 'i': if(kilk>0) { Student kkk (typ1[kilk-1]); jj=kkk.rik_naroj*3; } printf("Vvedy pozyciyu elementu i vin vyvedeccia %i\n",jj); indeks = Convert::ToInt32(Console::ReadLine()); if(vybMas=='1') { if(indeks>=kolic1) break; typ1[indeks].about(); Student k (typ1[indeks]); } else { if(indeks>=kolic2) break; typ2[indeks]->about(28); } puts(""); break; case 'd': printf("\nVvedy pozyciyu elementa yaky hoch vydalyty\n"); indeks = Convert::ToInt32(Console::ReadLine()); if(vybMas=='1') { for(i=indeks;i<kolic1;i++) typ1[i] = typ1[i+1]; kolic1--; } else { for(i=indeks;i<kolic2;i++) typ2[i] = typ2[i+1]; kolic2--; } break; case 'a': int a1,a2; float a3; if(kolic1==kilk && vybMas=='1' || kolic2==kilk && vybMas=='2') break; printf("Vvedy pozyciyu v masyvi kudy vstavyty obyekt\n"); indeks = Convert::ToInt32(Console::ReadLine()); a3 = Convert::ToSingle(Console::ReadLine()); a2 = Convert::ToInt32(Console::ReadLine()); a1 = Convert::ToInt32(Console::ReadLine()); if(vybMas=='2') { for(i=kolic2;i>indeks;i--) typ2[i] = typ2[i-1]; typ2[indeks] = new Student(a1,a2,a3); kolic2++; } else { for(i=kolic1;i>indeks;i--) { if(i%3==2) { Student aa1 (typ1[i-1]); printf(" %i\n",aa1.rik_naroj); } typ1[i] = typ1[i-1]; } typ1[indeks].rik_naroj=a1; typ1[indeks].serBal=a2; typ1[indeks].znannia_mov=a3; kolic1++; } break; case 'f': printf("\nVybery typ masyvu >"); bck: vybMas=getch(); if(vybMas!='1'&&vybMas!='2') goto bck; printf("\nVybrany masyv %c typu", vybMas); break; } goto bak; end_g: delete(typ1); delete(typ2); return 0; }
Додаток В Лістинг модуля student3.cpp #include "StdAfx.h" #include "student.h"
HBITMAP bmpExercising; student **arr=0; int MAX=0; int W=0; int H=0; student::student() { x=0; y=0; active=false;
}
student::~student() { }
student student::operator-- () { kilkist_rokiv--; return (*this); }
student & student::operator= (student &arg) { if(this == &arg) return (*this); int le=strlen(Name), len2=strlen(arg.Name), kc=(le>len2)?le:len2; for(int i=0; i<kc; i++) { if(i<le) Name[i]=arg.Name[i]; else Name[i]='\0'; } x=arg.x; y=arg.y; active=arg.active; return (*this); } student::student(const student & arg) { vozrast=arg.vozrast; rist=arg.rist; vaga=arg.vaga; int le=strlen(Name), len2=strlen(arg.Name), kc=(le>len2)?le:len2; for(int i=0; i<kc; i++) { if(i<le) Name[i]=arg.Name[i]; else Name[i]='\0'; } x=arg.x; y=arg.y; active=arg.active;
}
student::student(char *name,int vaga, int vik, float rist,int _vozrast) { vik=vik; vaga=vaga; vozrast=_vozrast; strcpy(Name,name); vaga=0.4F; x=rand()%500; y=rand()%500; active=false; }
bool student::is_whithin(int mx,int my) { if(mx<x||mx>x+W||my<y||my>y+H)return false; return true; }
void student::draw(HDC hdc) { HDC cDC=CreateCompatibleDC(hdc);
HBITMAP old=(HBITMAP)SelectObject(cDC,bmpExercising); // bitmap=LoadBitmap(hMod,MAKEINTRESOURCE(BIT2)); - загружается из ресурсов dll
if(active) { ::Rectangle(hdc,x-5,y-5,x+W+5,y+H+5); }
StretchBlt(hdc,x,y,W,H,cDC,0,0, W, H, SRCCOPY);
SelectObject(cDC,old);
DeleteDC(cDC);
::TextOutA(hdc,x,y+H+5,(LPCSTR)Name,strlen(Name)); ::MoveToEx(hdc,x,y+H+5,0); ::LineTo(hdc,x+W,y+H+5); }
Додаток Г Лістинг модуля student4fin.cpp #include "stdafx.h" #include "lab3.h" #include "student.h" #include <ctime>
#define MAX_LOADSTRING 100
// Глобальные переменные: HINSTANCE hInst; // текущий экземпляр TCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка TCHAR szWindowClass[MAX_LOADSTRING]; // имя класса главного окна
// Отправить объявления функций, включенных в этот модуль кода: ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine);
// TODO: разместите код здесь. MSG msg; HACCEL hAccelTable;
// Инициализация глобальных строк LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_LAB3, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance);
// Выполнить инициализацию приложения: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; }
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_LAB3));
// Цикл основного сообщения: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } }
return (int) msg.wParam; }
void addStud(student * d) { student **tmp=new student*[MAX+1]; for(int i=0;i<MAX;++i)tmp[i]=arr[i]; tmp[MAX]=d; delete [] arr; arr=tmp; ++MAX; }
void MoveArr(int dx,int dy) { for(int i=0;i<MAX;++i) { if(!arr[i]->active)continue; arr[i]->x+=dx; arr[i]->y+=dy; } }
void DeleteArr() { student **tmp=new student *[MAX]; int k=0; for(int i=0;i<MAX;++i) { if(arr[i]->active) { delete arr[i]; continue; } tmp[k]=arr[i]; ++k; } delete [] arr; MAX=k; arr=new student *[MAX]; for(int i=0;i<MAX;++i)arr[i]=tmp[i]; delete [] tmp; }
void DiselectArr() { for(int i=0;i<MAX;++i)arr[i]->active=false; }
// // ФУНКЦИЯ: MyRegisterClass() // // НАЗНАЧЕНИЕ: регистрирует класс окна. // // КОММЕНТАРИИ: // // Эта функция и ее использование необходимы только в случае, если нужно, чтобы данный код // был совместим с системами Win32, не имеющими функции RegisterClassEx' // которая была добавлена в Windows 95. Вызов этой функции важен для того, // чтобы приложение получило "качественные" мелкие значки и установило связь // с ними. // ATOM MyRegisterClass(HINSTANCE hInstance) { 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_LAB3)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = MAKEINTRESOURCE(IDC_LAB3); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
return RegisterClassEx(&wcex); }
// // ФУНКЦИЯ: InitInstance(HINSTANCE, int) // // НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно. // // КОММЕНТАРИИ: // // В данной функции дескриптор экземпляра сохраняется в глобальной переменной, а также // создается и выводится на экран главное окно программы. // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd;
hInst = hInstance; // Сохранить дескриптор экземпляра в глобальной переменной
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd) { return FALSE; }
ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd);
return TRUE; }
// // ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM) // // НАЗНАЧЕНИЕ: обрабатывает сообщения в главном окне. // // WM_COMMAND - обработка меню приложения // WM_PAINT -Закрасить главное окно // WM_DESTROY - ввести сообщение о выходе и вернуться. // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc;
static int first_flag=0;
if(first_flag == 0) { first_flag = 1; srand(time(0)); bmpExercising = (HBITMAP)LoadImage(hInst,L"student.bmp", IMAGE_BITMAP,0,0,LR_LOADFROMFILE | LR_CREATEDIBSECTION); BITMAP b; GetObject(bmpExercising, sizeof(BITMAP), &b); W=b.bmWidth; H=b.bmHeight;
arr=new student *[5]; MAX=5; for(int i=0;i<MAX;++i) { arr[i]=new student ("trololo"); }
}
int dx=0,dy=0;
switch (message) { case WM_KEYDOWN: { switch(wParam) { case VK_LEFT: { dx=-step; }break; case VK_RIGHT: { dx=step; }break; case VK_UP: { dy=-step; }break; case VK_DOWN: { dy=step; }break; case VK_INSERT: { student * s=new student ("ololo"); addStud (d); }break; case VK_DELETE: { DeleteArr(); }break; case VK_ESCAPE: { DiselectArr(); }break; }
MoveArr(dx,dy); ::InvalidateRect(hWnd, NULL, true); }break; case WM_LBUTTONDOWN: { for(int i=0;i<MAX;++i) { if(arr[i]->is_whithin(LOWORD(lParam), HIWORD(lParam))) { if(arr[i]->active) { arr[i]->active=false; } else { arr[i]->active=true; } } } ::InvalidateRect(hWnd, NULL, true); }break; case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Разобрать выбор в меню: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: { hdc = BeginPaint(hWnd, &ps); // TODO: добавьте любой код отрисовки... for(int i=0;i<MAX;++i)arr[i]->draw(hdc); EndPaint(hWnd, &ps); } break; case WM_DESTROY: { for(int i=0;i<MAX;++i)delete arr[i]; delete [] arr; PostQuitMessage(0); } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }
// Обработчик сообщений для окна "О программе". INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE;
case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; }
|
||
|
Последнее изменение этой страницы: 2017-01-24; просмотров: 208; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.236 (0.007 с.) |