willygroup
20-10-2008, 13:21
Ciao,
mi trovo dinnanzi a questo problema:
Applicazione Win32 in c++
Tramite clic su un pulsante di una dialog avvio un loop che termina solo alla pressione di un altro pulsante (sulla stessa o su altra dialog).
Come implemento il loop?
Io avevo pensato di usare la DlgProc che utilizzo per la gestione dei messaggi,
praticamente inserire il codice senza condizioni di loop sotto allo switch dei messaggi.
C'č qualcosa di pių efficacie?
BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg){
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDStop:
State = Stop;
break;
}
break;
default:
return FALSE;
}
if (State != Stop){
// Faccio tutti i miei calcoli
} else {//
// Eseguo il codice di Fine programma
// Chiudo la dialog
}
return TRUE;
}
EDIT: A quanto ho visto da alcune prove questo metodo non funziona!
La DlgProc viene invocata ad ogni azione effettuata sulla dialog, ma non cicla continuamente! :doh:
Il codice in C++ era circa cosė:
void program(){
while(state!=stop){
// da qualche parte c'era un getch che a seconda di cosa era stato premuto modificava lo stato.
// Se veniva premuto ESC metteva lo stato in Stop e usciva dal ciclo
}
}
int main(){
.
.
.
program()
// Gestione dell'uscita
.
.
.
}
Grazie mille
mi trovo dinnanzi a questo problema:
Applicazione Win32 in c++
Tramite clic su un pulsante di una dialog avvio un loop che termina solo alla pressione di un altro pulsante (sulla stessa o su altra dialog).
Come implemento il loop?
Io avevo pensato di usare la DlgProc che utilizzo per la gestione dei messaggi,
praticamente inserire il codice senza condizioni di loop sotto allo switch dei messaggi.
C'č qualcosa di pių efficacie?
BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg){
case WM_COMMAND:
switch(LOWORD(wParam)){
case IDStop:
State = Stop;
break;
}
break;
default:
return FALSE;
}
if (State != Stop){
// Faccio tutti i miei calcoli
} else {//
// Eseguo il codice di Fine programma
// Chiudo la dialog
}
return TRUE;
}
EDIT: A quanto ho visto da alcune prove questo metodo non funziona!
La DlgProc viene invocata ad ogni azione effettuata sulla dialog, ma non cicla continuamente! :doh:
Il codice in C++ era circa cosė:
void program(){
while(state!=stop){
// da qualche parte c'era un getch che a seconda di cosa era stato premuto modificava lo stato.
// Se veniva premuto ESC metteva lo stato in Stop e usciva dal ciclo
}
}
int main(){
.
.
.
program()
// Gestione dell'uscita
.
.
.
}
Grazie mille