Kao sto ste u ranijim tutorijalima primetili, Allegro ima nedostatak da mu X dugme sa gornje desne strane nije ugradjen. Stoga, postoji nacin kako da "stvorimo" X dugme...
Citat:#include<allegro.h>
#define SIRINA_EKRANA 800
#define VISINA_EKRANA 600
bool zatvori = false;
void proveraZatvaranja()
{
zatvori = true;
}
END_OF_FUNCTION(proveraZatvaranja)
// Funkcija koja se koristi kao callback za zatvaranje prozora mora biti završena komandom END_OF_FUNCTION
/*Uvodimo globalnu promenljivu zatvori tipa bool i funkciju proveraZatvaranja, koje
cemo koristiti kako bismo omogucili zatvaranje programa uz pomoc dugmeta X */
int main()
{
allegro_init();
install_keyboard();
set_color_depth(32);
set_gfx_mode(GFX_AUTODETECT_WINDOWED, SIRINA_EKRANA, VISINA_EKRANA, 0, 0);
set_window_title("Lekcija 2");
LOCK_FUNCTION(proveraZatvaranja);
//Funkcija koja se koristi kao callback za zatvaranje prozora mora biti zaključana komandom LOCK_FUNCTION
LOCK_VARIABLE(zatvori);
Sve promenljive koje se koriste u zaključanim funkcijama, a nisu deklarisane kao volatile moraju biti zaključane komandom LOCK_VARIABLE
set_close_button_callback(proveraZatvaranja);
/*Uz pomoc ove funkcije postavljate dugme X u gornji desni ugao ekrana.
Kada se klikne na dugme X, izvrsi se funkcija koja se nalazi kao parametar funkcije set_close_button_callback */
while(!zatvori)
{
textout(screen, font, "ZDRAVO SVETE!", SIRINA_EKRANA/2, VISINA_EKRANA/2, makecol(255, 0, 0));
}
//Kao sto se moze primetiti, uslov ove petlje ce biti sve dok zatvori ne dobije vrednost true, odnosno dokle god korisnik ne klikne na dugme X
allegro_exit();
return 0;
}
END_OF_MAIN()
Ukoliko nekog zanima vise o LOCK_FUNCTION LOCK_VARIABLE makroima, neka poseti sledeci sajt:
https://www.allegro.cc/manual/4/api/timer-routines/install_int_ex
Big big credits to Srki_82
|