Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Re: Kako da onemogucim zatvarnje aplikacije na x ako se nije ispunio

[es] :: C/C++ programiranje :: Re: Kako da onemogucim zatvarnje aplikacije na x ako se nije ispunio

[ Pregleda: 2852 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Kako da onemogucim zatvarnje aplikacije na x ako se nije ispunio23.01.2004. u 11:49 - pre 247 meseci
neki uslov
References: <[email protected]>
In-Reply-To: <[email protected]>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Alisa, u callback funkciji (verovatno neka OnExit(...) ili OnClose(...)
funkcija u Windows-u) koja se poziva kada se prozor gasi (a time i
aplikacija ako je u pitanju jedanprozorwin32guiaplikacija) moras da
napises kod koji odradi kvalitetan i siguran izlazak programa. Ja cu ovo
objasniti na primeru, koji doduse nema veze sa "standardnim" Windows
programiranjem, a koji radi i na Windows-u takodje.

Primer iz eFLTK tread_ball aplikacije koja po difoltu kad se startuje
ima 5 loptica koje lete okolo i odbijaju se od zidova (ivica prozora):
Code:

....
void send_threads_exit(Fl_Widget *w, void *d)
{
// Unlock EFLTK mutex (callbacks are always locked by efltk)
Fl::unlock();

int i;

// Send kill_thread for all threads
for(i=0; i<BALL_CNT; i++) {
balls[i]->kill_thread();
}

// Join all threads (wait exit)
for(i=0; i<BALL_CNT; i++) {
balls[i]->join();
printf("Killed thread: %dn", i);
delete balls[i];
}

// Lock mutex again, FLTK unlocks it
Fl::lock();

w->hide();
}

....

Ovo gore je funkcija koja se poziva kada korisnik "pritisne na X".
Najtacnije receno ova funkcija se poziva u callback funkciji (event)
koja se poziva pri zatvaranju prozora.

Ne obracaj paznju na argumente funkije, na otkljucavanje EFLTK muteksa i
slicno, to su stvari vezane za EFLTK (multiplatform GUI toolkit).

Ovde nas zapravo interesuju ove dve petlje u toj funkciji - one su
zapravo ono sto ti treba da odradis u svojoj aplikaciji.

Prva petlja posalje nitima (balls[] je niz Thread objekata) kill signal.

Druga petlja "join"-uje sve aktivne niti.

Nakon nje su sve niti ugasene i aplikacija moze slobodno da se "ugasi".
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Re: Kako da onemogucim zatvarnje aplikacije na x ako se nije ispunio04.07.2004. u 13:52 - pre 241 meseci
Ova poruka je odlutala od teme: http://www.elitesecurity.org/poruka/269887
 
Odgovor na temu

[es] :: C/C++ programiranje :: Re: Kako da onemogucim zatvarnje aplikacije na x ako se nije ispunio

[ Pregleda: 2852 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.