PDA

Visualizza la versione completa : [C++] Dubbi sulla programmazione ad eventi


XWolverineX
24-10-2005, 17:20
Salve.
Prima di cominciare a spilucciare qualcosa di C++, ho programmato in Visual Basic, che usa la programmazione ad eventi.
In C++ invece è strutturata/ad oggetti.
Però in C++ si può programmare ad eventi. Ho infatto sperimentato che facendo una finestra di windows in C++, si intercettano gli eventi facendo, con il LRESULT CALLBACK


switch (Msg)
case WMPAINT:
bla bla
break;

E quindi piu' o meno è qualcosa orientato agli eventi, ma se lo volessi fare con programmi di altro genere? Come si possono generare eventi come in Visual Basic?
Ho notato che il celebre motore grafico Irrlicht usa la classe MyEventReceiver, ma come ha fatto?
Potete darmi delle delucidazioni su come creare e intercettare gli eventi in C++? Tipo la pressione di un tasto?
Grazie mille

XWolverineX
24-10-2005, 22:35
up

X-sPiKe_iT
24-10-2005, 23:44
allora, intanto WM_PAINT e' un MESSAGGIO e non un evento che viene inviato dal form alla funzione che gestisce il dialog. Premetto che non so niente di vb (menomale :dhò:) cmq il pezzo di codice che hai citato fa parte di una struttura per gestire un semplice dialog. Detto in soldoni, ogni controllo (ovvero editbox button richedit label ect ect) hanno un id univoco all'interno del form che ti permette di gestirli con le apposite api, e ti permettono anche di capire quale controllo ha mandato il messaggio. Per esempio se tu su un form disegni 2 bottoni, uno con id 1 e l'altro con id 2 nel momento in cui tu premi uno dei due il controllo manda un messaggio WM_COMMAND che tu ricevi e gestisci con quello switch, per capire poi quale dei due tasti e' stato premuto devi controllarne l'id. Mi rendo conto che ho detto tante cose confusionarie ma cerca di immedesimarti :P

XWolverineX
25-10-2005, 16:39
Bhe si alla fine quello è un messaggio gestito dal WndProc però alla fine è come un evento.
Però questi Mesg posso usarli solo con le finestre di windows. Come intercetto gli eventi con programmi da Console? tipo quando premi un pulsante....

XWolverineX
06-11-2005, 12:26
Cerco ancora aiuto su questa dubbiosa domanda

Samuele_70
06-11-2005, 18:29
Originariamente inviato da XWolverineX
Bhe si alla fine quello è un messaggio gestito dal WndProc però alla fine è come un evento.
Però questi Mesg posso usarli solo con le finestre di windows. Come intercetto gli eventi con programmi da Console? tipo quando premi un pulsante....

Io, di solito, faccio così:


#include <stdio.h>
#include <conio.h>

int main( void )
{
char hkey, key;
while (key != 27) // Esci se premi il tasto ESC
{
if( kbhit() ) // Rileva la pressione di un tasto
{
hkey = 0;
key = getch();
if(key == 0)
{
hkey = -1; //
key = getch();
}
if( hkey == -1)
{
printf("hkey = H%3i key = %3i ext \r", hkey, key);
switch(key)
{
case 77: // Codice tasto freccia dx
//
break;
case 75: // Codice tasto freccia sx
//
break;
case 80: // Codice tasto freccia su
//
break;
case 72: // Codice tasto freccia giu'
//
break;
}
}
else
{
printf("hkey = H%3i key = %3i (%c) \r", hkey, key, key);
switch(key)
{
case 13: // Codice tasto INVIO
//
break;
case 32: // Barra spazio
//
break;
}
}
}
}
return 0;
}

Intendevi una cosa del genere ?

XWolverineX
06-11-2005, 18:48
Si, è proprio quello che cercavo...mi spiegheresti il codice?

Samuele_70
06-11-2005, 19:06
Originariamente inviato da XWolverineX
Si, è proprio quello che cercavo...mi spiegheresti il codice?

#include <stdio.h>
La direttiva #include chiede al compilatore di includere un determinato file all'interno del file che contiene la direttiva #include.Il nome del file che deve essere incluso può essere scritto sia tra virgolette che tra parentesi acute (simboli minore e maggiore). Per esempio, le istruzioni
#include "stdio.h"
#include <stdio.h>
chiedono entrambe al compilatore C di leggere e compilare il file d'intestazione necessario alle funzioni di I/O.
E' permesso che file inclusi contengano a loro volta delle direttive #include; in questo caso si parla di "include annidate".Il livello di annidamento consentito dipende dal particolare compilatore che si sta usando.

(tratto da : Turbo C McGraw-Hill del 1993)

Hem non ho più voglia di scrivere ... :sonno:
Il listato sembra abbastanza chiaro.
Facciamo una cosa, dimmi tu cosa non ti è chiaro così risolviamo prima. :yuppi:

XWolverineX
06-11-2005, 19:09
Ma so come funzionano gli include :)
Faccio finestre di windows e non so usare gli include?
Ad ogni modo ho compreso rileggendolo, thank you!

Samuele_70
06-11-2005, 19:47
Originariamente inviato da XWolverineX
Ma so come funzionano gli include :)
Faccio finestre di windows e non so usare gli include?
Ad ogni modo ho compreso rileggendolo, thank you!


Meno male che qualcuno sopporta il mio umorismo.
( A dir la verità poco apprezzato di questi tempi )

Loading