Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Встановлення програми та необхідні файли/каталоги↑ ⇐ ПредыдущаяСтр 3 из 3 Содержание книги
Поиск на нашем сайте
Скопіювати в цільовий каталог файли: «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; просмотров: 164; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.242.223 (0.009 с.) |