[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 1526 korisnika na forumu :: 67 registrovanih, 10 sakrivenih i 1449 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 15694 - dana 01 Feb 2026 12:23

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 015, A.R.Chafee.Jr., aleph_one, bestguarder, bojanstros9, bokicacar, brufen, Clouseau, crazydkure, dd201176, Der Rote Baron, DonRumataEstorski, DrNeoCortex, DzigiNS, EVIDENTICAR, Fabius, goran.vvv, GveX, Hardenberg, iceburn, ikan, ivanR164, j-22orao, jarovitt, jeen yuhs, JOntra, Kajzer Soze, Kobrim, kolle.the.kid, kori, KUZMAR, Lazur_01, Lieutenant, M74AB3, Marko Marković, markolopin, Metanoja, milanpb, milenko crazy north, milutin134, Mitogna, Miškić, mkukoleca, mm1811, mux, nobutado, Pekman, peradetlić, PlayerOne, PMsnow, RajkoB, RJ, sarma, Sharpshooter, sistem22, Smiljkovich, Srki98, Tihi86, v82, Vatreni Zmaj, vidra1, vjetar, Vojkan Petrovic, Vzor50, yagosh, zlaya011, 79693