[2] Allegro - Zatvaranje programa uz pomoc X dugmeta

[2] Allegro - Zatvaranje programa uz pomoc X dugmeta

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3898
  • Gde živiš: Novi Sad,Klisa

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:
[Link mogu videti samo ulogovani korisnici]


Big big credits to Srki_82 Ziveli Ziveli



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 935 korisnika na forumu :: 60 registrovanih, 8 sakrivenih i 867 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Ba4e, baltazar01, Bivan, bojank, bokisha253, bolenbgd, boromir, d.arsenal321, Darko Jovanovic, DeerHunter, Dioniss, doktor097, DonRumataEstorski, dragan_mig31, dusanobr, ElvisP, FileFinder, FOX, gregorxix, Haris, HrcAk47, ivan979, JK, jodzula, Kalem, laganini123, larix, lord sir giga, Lošmi, mainstream, maxim_von_burdengate, Meklejn, Mercury, milenko crazy north, Mrav Obrad, Mzee, nebidrag, nekdo, NMNJ, Nomica, PenzosGSP, Povratak1912, PrincipL, procesor, raso76, Relixiran, Romibrat, Shajlok, Sirius, stalja, Tas011, vathra, vidra boy, Vlada78, Vladovbl, Volkhov-M, Zeljo980, zombicar153, 79693