[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:
https://www.allegro.cc/manual/4/api/timer-routines/install_int_ex


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 1359 korisnika na forumu :: 30 registrovanih, 6 sakrivenih i 1323 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: amaterSRB, Andrija357, Atomski čoban, babaroga, Bane san, Bobrock1, Cobi026, drimer, GandorCC, Georgius, Litostroton, mile23, milutin134, MiroslavD, mrav pesadinac, naki011, nesa1962, Panter, pein, Posmatrac77OKB, raptorsi, ruma, S2M, sevenino, skvara, taz1cl, vandrej, vasa.93, vladulns, zlaya011