View Full Version : uscire da un for
salve a tutti
sto usando il visual c++ 6.0 enterprise.
devo implementare un ciclo for che compie un tot numero di iterazioni (scansione area schemo), e questo ciclo for deve ripetersi finche nn viene premuto un tasto sulla tastiera oppure si fa click col mouse su uno dei tasti....
sapreste dirmi come fare?
salve a tutti
sto usando il visual c++ 6.0 enterprise.
devo implementare un ciclo for che compie un tot numero di iterazioni (scansione area schemo), e questo ciclo for deve ripetersi finche nn viene premuto un tasto sulla tastiera oppure si fa click col mouse su uno dei tasti....
sapreste dirmi come fare?
raga, ho pensato che mi servirebbe un "qualcosa" che facesse un controllo di messaggi arrivati (input tastiera e/o mopuse) a ogni fine ciclo....
nessuno mi sa aiutare?
mrjohnny
28-01-2006, 00:55
raga, ho pensato che mi servirebbe un "qualcosa" che facesse un controllo di messaggi arrivati (input tastiera e/o mopuse) a ogni fine ciclo....
nessuno mi sa aiutare?
mi dispiace non poterti aiutare.. pero' ti scrivo una soluzione in VB .NET (se puo' esserti utile..)
supponiamo che questo è il tuo ciclo for:
dim mouse as integer
Sub controllociclofor()
dim i as integer
for i = 1 to 10
' operazioni da compiere..
if mouse = 1 then
mouse = 0
exit for
end if
next
end sub
'questo rileva l'evento clic..:
Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
mouse=1
End Sub
Note:
all'evento clic, viene valorizzata la variabile: mouse =1
di conseguenza il ciclo for si ferma..
mah capisco che non ho risolto il tuo problema..
se puoi prendi spunto da questo..
By MrJohnny..
Il loop se ho capito bene è in un thread, giusto?
Il loop se ho capito bene è in un thread, giusto? kk3z, su Windows qualsiasi cosa è in un thread :D
il thread è l'unità fondamentale di esecuzione, lo scheduler di Windows lavora con quelli: tu che sei esperto con le Win32 dovresti saperlo :Prrr:
@swarm: per rispondere direttamente al titolo del topic, per uscire da un ciclo si usa break ^^
per sapere quando fare il break vedi tu, se vuoi lavorare con un solo thread ogni tanto penso che devi svuotare la coda dei messaggi, altrimenti se lavori con due thread penso che ti convenga mettere le elaborazioni lunghe in un worker a parte che ogni tanto deve controllare lo stato di un flag...
siccome il worker thread il flag lo deve solamente leggere, non c'è bisogno di sincronizzare la variabile ;)
kk3z, su Windows qualsiasi cosa è in un thread :D
il thread è l'unità fondamentale di esecuzione, lo scheduler di Windows lavora con quelli: tu che sei esperto con le Win32 dovresti saperlo :Prrr:
@swarm: per rispondere direttamente al titolo del topic, per uscire da un ciclo si usa break ^^
per sapere quando fare il break vedi tu, se vuoi lavorare con un solo thread ogni tanto penso che devi svuotare la coda dei messaggi, altrimenti se lavori con due thread penso che ti convenga mettere le elaborazioni lunghe in un worker a parte che ogni tanto deve controllare lo stato di un flag...
siccome il worker thread il flag lo deve solamente leggere, non c'è bisogno di sincronizzare la variabile ;)
ciao
ti spiego meglio quello che devo fare...
in pratica, il programma principale, una volta dato lo "start", esegue un ciclo for che fa la scansione di un'area dello schermo (plot+vari calcoli), e se nn succede nulla, finito un ciclo deve farne un altro.
In pratica quello che voglio è che, se durante uno dei cicli for, premo su uno dei pulsanti di controllo o premo un tasto associato, il ciclo finisca,controlli cosa è stato premuto, aggiorni le variabili, e poi ricominci (se deve). (cioè mi va bene se l'aggiornamento variabili è fatto quando inizia una nuova scansione)
Pensavo che una soluzione fosse lavorare con due thread (il principale per i comandi e un altro per il ciclo for), ma nn sapevo come fare.....
Con un solo thread, come si fa a richiedere a un certo punto del programma, di esaminare quale tasto o quale evento mouse è avvenuto?
GRAZIE!!
kk3z, su Windows qualsiasi cosa è in un thread :D
il thread è l'unità fondamentale di esecuzione, lo scheduler di Windows lavora con quelli: tu che sei esperto con le Win32 dovresti saperlo :Prrr:
Eddai :D intendevo "un altro thread", swarm mi ha capito dato che è la continuazione dell'altro thread (e qui non parlo di windows)
Eddai :D intendevo "un altro thread", swarm mi ha capito dato che è la continuazione dell'altro thread (e qui non parlo di windows)
si ti ho capito benissimo, il loop è nel thread principale ( e unico)
raga, datemi una mano/consiglio...
come faccio a verificare quali eventi sono accaduti durante un for?
raga, secondo voi dovrei gestire i messaggi tipo con PeekMessage e GetMessage?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.