[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 1055 korisnika na forumu :: 58 registrovanih, 4 sakrivenih i 993 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, AS, Bbbggg1979, Bojan198527, bokicacar, borya90, CCCP, Cvexi, darcaud, debeli, desmeki, draganca, dskrlec33, Dukelander, dusko barajevo, Georgius, glados, goxin, Grebostrek, halkin gol, Hitri, kreker, Kriglord, ladro, lafa008, Macalone, Mackomen, Magarac, Makeitdrip, MaRtInsrbija1993, Mickey91, MiloradKomadic, mkukoleca, monomah, Ne doznajem se u oružje, nekdo, Njubara, opt1, Oscar, Panter, PlayerOne, Savantije, shone34, Sirius, Sky diver 29, Srky Boy, TangoSix, Topaz9, Toper, tritonus, Trpe Grozni, TTN, tubular, VJ, voja64, XBMC, Zedi100, zemljanin