на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Розробка програми для демонстрації автомобільного руху через залізнодорожний переїзд
p align="left">NULL // покажчик на данні вікна(для MDI-вікон));

if (!hWnd) return NULL;

Кожного разу вікно потрібно показати та обновити у пам'яті:

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

Щоб зареєструвати вікно потрібно використати API-функцію RegisterClass(&wc).

if(!RegClass(WndProc,szMainClass,COLOR_APPWORKSPACE,IDI_ICON1,IDC_CURSOR1,IDR_MENU1)) return FALSE;

Для створення діалогового вікна потрібна наявність трьох компонентів:

шаблону діалогу (описує форму і розміщення самого діал. вікна і всіх його внутрішніх елементів керування на екрані);

програмного коду, який утворює і відображає його на екрані;

діалогової процедури, яка обслуговує взаємодію користувача з блоком діалогу.

Діалогова процедура потрібна для обробки повідомлень, пов'язаних з обміном даних у діалоговому вікні.

Для дочірніх та діалогових вікон потрібно об'явити прототип віконної функції:

BOOL CALLBACK DlgProg(HWND hdWnd,UINT mes,WPARAM wParam,LPARAM lParam);

BOOL CALLBACK DlgProg2 (HWND hdWnd,UINT mes,WPARAM wParam,LPARAM lParam);

BOOL CALLBACK DlgProg3 (HWND hdWnd,UINT mes,WPARAM wParam,LPARAM lParam);

BOOL CALLBACK DlgProg4 (HWND hdWnd,UINT mes,WPARAM wParam,LPARAM lParam);

Програмна реалізація діалогового вікна, що містить завдання:

BOOL CALLBACK DlgProg2(HWND hdWnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

switch (msg)

{

case WM_CLOSE:

{

EndDialog(hdWnd, 0);

return 1;

}

}

return 0;

}

2.5 Програмна реалізація загальних елементів керування та музики

Для того, щоб показати свої вміння більш обширного використання ресурсів мови програмування VС++, я використав два загальних елементи керування: Стрічки стану та акселератори.

Щоб додати до проекту будь - який елемент керування потрібно зробити такі додаткові дії:

#include <commctrl.h>

Project ? Setting ? Link ? Object\Library modules : comctl32.lib

Підключаємо до проекту бібліотеку <commctrl.h>, яка містить бази даних для роботи з загальними елементами керування та дописуємо по вище написаному напрямку рядок comctl32.lib.

Добавлення рядка стану має такий вигляд:

#define ID_STATUS 120

...

LRESULT CALLBACK Window (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )

{

static HWND hStatus;

switch(msg)

{

case WM_CREATE:

WS_VISIBLE,

"Готово", hWnd, ID_STATUS);

return 0;

...

}

Рядок стану - це дочірнє вікно з певними параметрами. Для того, щоб розбити цей рядок на декілька областей потрібно:

static int parts[2];

...

parts[0]=cx/2; parts[1]=cx;

SendMessage(hStatus,SB_SETPARTS,2,(LPARAM)parts);

...

Для підключення акселераторів ( комбінація клавіш ) потрібно:

Insert ? Resource ? Accelerator

Описати потрібний набір клавіш для пунктів меню

Або в самій програмі потрібно написати:

HACCEL CreateAccelTable(void)

FCONTROL;

Accel[0].key=0x53;//"S"

Accel[0].cmd=IDM_START;

//Шлагбаум

Accel[1].fVirt=FVIRTKEY

int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )

{

HACCEL hAccel=CreateAccelTable();

}

...

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

{

if (!TranslateAccelerator(hWnd,hAccel,&msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

DestroyAcceleratorTable(hAccel);

...

Для додання до проекту звуку потрібно зробити такі додаткові дії:

Project ? Setting ? Link ? Object\Library modules : winmm.lib

Для того, щоб грав звук потрібно написати таку функцію:

PlaySound (“train”, hInstance, SND_RESOURCE | SND_ASYNC)

Перший параметр відповідає за назву звуку.

2.6 Програмна реалізація роботи з шлагбаумом

Спочатку необхідно об'явити змінні, які будуть відповідати за рух машини та поїзда. Оскільки цих два об'єкти являють собою малюнки їх необхідно завантажити у ресурси, а потім завантажувати з ресурсів у програму.

Програмна реалізація зображення машини:

hBmpCar1 = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP4));

DrawTransparentBitmap(hdc, // кінцевий DC.

hBmpCar1, // Бітмап, який буде намальований

X2, // координата X.

Y2, // координата Y.

0x00FFFFFF); // Колір для прозорих

// пикселів (в данном випадку білий

DeleteObject ( hBmpCar1 ); // знищили об'єкт

Програмна реалізація зображення поїзда:

hBmpTrain = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP4));

DrawTransparentBitmap(hdc, // кінцевий DC.

hBmpTrain, // Бітмап, який буде намальований

X, // координата X.

Y, // координата Y.

0x00FFFFFF); // Колір для прозорих

// пикселів (в данном випадку білий

DeleteObject (hBmpTrain ); // знищили об'єкт

Для того, щоб машина та поїзд рухались необхідно змінювати значення змінних X2 та Y2 - для машини, X - для поїзда (оскільки поїзд рухається горизонтально, координата Y залишається сталою), які відповідають за поточне місце на фоні . Над цією задачею працює таймер:

case WM_TIMER:

{

if ((shlagbaym==0)||(Y2<330)||(Y2>350))

{

if (car==0)

{

Y2-=13;

InvalidateRect(hWnd, &car1, FALSE);

}

if (car==1)

{

if (wham==0)

SND_ASYNC);

wham++;

X2+=13;

InvalidateRect(hWnd, &car1, FALSE);

}

if ((Y2<-200)||(X2>1000))

{

Y2=800;

X2=450;

}

}

if (par==1)

{

X+=10;

InvalidateRect(hWnd, &train, FALSE);

if(X<=(X2+45)&&(X+538)>=(X2-1)

&&(Y+118)>=(Y2+1)&&(Y<=Y2+85))

car=1;

if (X>1001)

{

X2=450;

par=0;

car=0;

wham=0;

}

}

return 0;

}

Для запуску таймера необхідно записати таку функцію:

int Speed=10;

…………….

SetTimer(hWnd,1,Speed,NULL);

Перший параметр вказує дескриптор вікна, другий - номер таймера, третій - швидкість. Останній пов'язаний з системою, за замовчуванням рівний нулю.

Шлагбаум теж потрібно намалювати:

if(shlagbaym==0)

{

SendMessage(hStatus, SB_SETTEXT, 1, (LONG)"Увага!

Шлагбаум відкрито!");

if (w==0)

{

InvalidateRect(hWnd, &shlagbm, FALSE);

w++;

}

hBmpShlagbaym = LoadBitmap(hInstance,

MAKEINTRESOURCE(IDB_BITMAP9));

DrawTransparentBitmap(hdc,hBmpShlagbaym,X3,Y3,0x00FFFFFF);

DeleteObject ( hBmpShlagbaym ); // знищили об'єкт

}

if(shlagbaym==1)

{

SendMessage(hStatus, SB_SETTEXT, 1, (LONG)"Увага! Шлагбаум

закрито!");

if (w==1)

{

InvalidateRect(hWnd, &shlagbm, FALSE);

w--;

}

hBmpShlagbaym = LoadBitmap(hInstance,

MAKEINTRESOURCE(IDB_BITMAP5));

DrawTransparentBitmap(hdc,hBmpShlagbaym,X3,Y3,0x00FFFFFF);

DeleteObject ( hBmpShlagbaym );

}

В залежності від змінної shlagbaym , шлагбаум знаходить або в опущеному або у піднятому стані.

При натисненні на «Керування Шлагбаумом» --->«Підняти Шлагбаум» шлагбаум піднімається, і автомобіль продовжує рух, «Керування Шлагбаумом» -->«Опустити Шлагбаум» шлагбаум опускається і автомобіль зупиниться, коли під`їде до нього. Щоб уникнути ДТП потрібно вчасно закрити шлагбаум, якщо не встигли - далі все залежить від випадку. Фрагмент коду, що описує все це наведемо нижче:

{

if ((shlagbaym==0)||(Y2<330)||(Y2>350))

{

if (car==0)

{

Y2-=13;

InvalidateRect(hWnd, &car1, FALSE);

}

if (car==1)

{

if (wham==0)

SND_ASYNC);

wham++;

X2+=13;

InvalidateRect(hWnd, &car1, FALSE);

}

if ((Y2<-200)||(X2>1000))

{

Y2=800; //Збиваємо значення на початкові

X2=450;

}

}

if (par==1)

{

X+=10;

InvalidateRect(hWnd, &train, FALSE);

if(X<=(X2+45)&&(X+538)>=(X2-1)&&(Y+118)>=(Y2+1)&&(Y<=Y2+85))

car=1;

if (X>1001)

{

X2=450; //Збиваємо значення на початкові

par=0;

car=0;

wham=0;

}

}

return 0;

}

Аналіз результатів роботи програми

Програмний продукт _-=Мій Курсовий Проект=-_ наглядно показує регулювання автомобільного руху через залізнодорожній переїзд, при використанні шлагбауму. Розроблений програмний продукт необхідно перевірити на конкретність роботи і підготувати інструкцію по роботі з ним.

3.1 Інструкція з технічного обслуговування

Вступ.

Дана інструкція призначена для технічного обслуговування програми, тобто встановлення її на комп'ютер та експлуатації.

Загальні вказівки.

Програма встановлюється на комп'ютер який відповідає вимогам технічних засобів поданих нижче.

Вимоги до технічних засобів.

Мінімальні системні вимоги:

Pentium III 1.5 ГГц;

128 MБ RAM;

12 MБ вільного місця на жорсткому диску;

Вмонтована звукова карта;

Windows ME, XP.

Рекомендовані системні вимоги:

Pentium III 2.0 ГГц;

128 MБ RAM;

15 MБ вільного місця на жорсткому диску;

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.