Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1013 connectés 

  FORUM HardWare.fr
  Programmation

  Gestion des évènements avec les MFC

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gestion des évènements avec les MFC

n°35452
El_gringo
Posté le 30-05-2001 à 09:17:24  profilanswer
 

Salut, c juste un topic pour qu'une âme charitable m'explique un peu le principe des évènement en C++.
En Java, g l'habitude de les utiliser, mais en C++, vu que je développe sous Visual C++, g pu développer mon application sans vraiement chercher à les comprendre (c VC++ qui les gèrent !)
S'y vous plait...

mood
Publicité
Posté le 30-05-2001 à 09:17:24  profilanswer
 

n°35525
El_gringo
Posté le 30-05-2001 à 11:11:05  profilanswer
 

Ma, pelsonne né veut aidé lé Gringo !?

n°35531
petoulachi
A fortiori, brigadier chef
Posté le 30-05-2001 à 11:21:11  profilanswer
 

bin moé yé né sait pas ...

n°35541
wpk
Posté le 30-05-2001 à 11:47:25  profilanswer
 

ca tombe encore une fois sur moi :)
 
la gestion des evenements sous VC++ avec MFC, c'est juste une simplification de la gestion des evenements de l'API Win32 brute.
En gros (on va pas entrer dans des details sordides de chez Bilou), en API Win32 t'as des messages qui sont en fait (si mes souvenirs sont bons) des longs : un code pour le message, et des infos complementaires.
Ca t'amene a du code source contenant un imense switch qui organise l'aiguillage suivant le code de l'event genere par win.
 
Puis bilou fit la MFC:
et la c'est super, y'a de l'objet => switch = polymorphisme
Normalement c'est ce qu'ils auraient du faire : creer des objets avec des methodes virtuelles pour chaque message que l'utilisateur n'aurait plus qu'a redef. Mais chez MS, ils ont le souci de l'optimisation et comme chaque fonction virtuelle eh ben c'est une entree ds la vtable, ils se sont dit, on va bidouiller => utilisation des macros de table de message qui cree pour toi l'imense switch des debuts.
 
Dans les grandes lignes ca doit etre ca pour le detail regarde la msdn et meme le code source des MFC (si t'est suffisament maso)

n°35544
El_gringo
Posté le 30-05-2001 à 11:53:40  profilanswer
 

wpk a écrit a écrit :

ca tombe encore une fois sur moi :)
 
la gestion des evenements sous VC++ avec MFC, c'est juste une simplification de la gestion des evenements de l'API Win32 brute.
En gros (on va pas entrer dans des details sordides de chez Bilou), en API Win32 t'as des messages qui sont en fait (si mes souvenirs sont bons) des longs : un code pour le message, et des infos complementaires.
Ca t'amene a du code source contenant un imense switch qui organise l'aiguillage suivant le code de l'event genere par win.
 
Puis bilou fit la MFC:
et la c'est super, y'a de l'objet => switch = polymorphisme
Normalement c'est ce qu'ils auraient du faire : creer des objets avec des methodes virtuelles pour chaque message que l'utilisateur n'aurait plus qu'a redef. Mais chez MS, ils ont le souci de l'optimisation et comme chaque fonction virtuelle eh ben c'est une entree ds la vtable, ils se sont dit, on va bidouiller => utilisation des macros de table de message qui cree pour toi l'imense switch des debuts.
 
Dans les grandes lignes ca doit etre ca pour le detail regarde la msdn et meme le code source des MFC (si t'est suffisament maso)




 
ça TOMBE pas sur toi, c toi qui vient me répondre parce que t l'âme charitable que je demandais et que tu sais de quoi tu parles...
Sinon, merci pour la petite histoire, c'était très instructif, mais en fait je demandais plutot comment on utilise les évènements ! :D  :D  (déosolé !)

n°35701
El_gringo
Posté le 30-05-2001 à 16:49:33  profilanswer
 

...personne !?

n°35740
topaz
hum 8-)
Posté le 30-05-2001 à 17:43:44  profilanswer
 

[moa j'ai VC++6.0 en Anglais]
bon c facile,  
tu selectionne ton objet et deuxieme bouton -> ClassView
en suite tu definit une variable de controle pour ton objet et une fonction pour une evenement de ton controle  
et voila ensuite dans "[lenomduprojet]DLG.CPP" cela creer une fonction ou tu gere l'evenement !
 
A+ Topaz

n°35752
El_gringo
Posté le 30-05-2001 à 17:59:44  profilanswer
 

topaz a écrit a écrit :

[moa j'ai VC++6.0 en Anglais]
bon c facile,  
tu selectionne ton objet et deuxieme bouton -> ClassView
en suite tu definit une variable de controle pour ton objet et une fonction pour une evenement de ton controle  
et voila ensuite dans "[lenomduprojet]DLG.CPP" cela creer une fonction ou tu gere l'evenement !
 
A+ Topaz




 
Merci, mais ça c'est pour des évènements prédéfinis, je sais faire, mais je veux savoir pour créer soit même des évènements...

n°35934
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 31-05-2001 à 11:05:43  profilanswer
 

tu fais un truc dans ce style :
 
à la fin du Win main, tu as uns boucle :
//tant qu'on a pas le message WM_QUIT  
     while (GetMessage (&msg, NULL, 0, 0))  
     {
     //traduire les données du message pour qu'elles soient lisible
          TranslateMessage (&msg) ;
    //envoyer le message à Windows qui le transmettra à WINDOWPROC
          DispatchMessage (&msg) ;
     }
 
  //on envoie une valeur indiquant la fin du programme au système
     return msg.wParam ;
}
 
// Maintenant, la fonction WndProc qui gére les événements . C comme un Action Listener qui gérerait tout.
 
 
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{    
  //suivant le message ....
 switch (message)
 {      
  case WM_DESTROY:  
   //si on ferme la fenêtre
   //alors mettre un message "WM_QUIT" dans la file d'attente
   PostQuitMessage (0) ;
   break ;
 
  case WM_CLOSE:
   // Si on ferme la fenetre
   // on envoie un message WM_QUIT dans la  file d'attente
   PostQuitMessage (0) ;
   break ;
 
  case WM_COMMAND: // Messages "prédéfinis" par l'utilisateur.
   switch (wParam)
   {
/* ------> */    case ID_PLAYNIFF: // L'id de bouton, de l'option de menu, etc. ...
     playNiff() ;
     break ;
    case ID_PLAYSCORE:
     playScor() ;
     break ;
    case ID_NIFFPLAY :
     niffPlay() ;
     break ;
    case ID_SCOREPLAY :
     scorPlay() ;
     break ;
    case ID_QUITTER :
     PostQuitMessage (0) ;
     break ;
 
    default:
     return (DefWindowProc (hwnd, message, wParam, lParam)) ;
   }
   break ;
  default:
   //tous les messages dont nous ne nons servons pas sont renvoyés au système
   return (DefWindowProc (hwnd, message, wParam, lParam)) ;
 }
  // celui là, c'est juste pour enlever un petit warning.
  return (DefWindowProc (hwnd, message, wParam, lParam)) ;
}
 
 
 
 
// Et vooilàà !
 
Maintenant c'était peut_être pas ça que t'attendais ?
 
à plus !
 
Moi aussi, j'ai une question super intéressante :
http://forum.hardware.fr/sqlforum/ [...] ache=cache
 
 
 
Ps : c'est pas du MFC, ce que je viens de te filer .

 

[edit]--Message édité par Moustaaki--[/edit]

n°35959
wpk
Posté le 31-05-2001 à 11:31:09  profilanswer
 

Moustaaki> c'est la facon brute de fonderie ca sans MFC
or je crois que le gringo lui, c'est plus les MFC son trip
 
donc pour te mettre sur une piste, dans CWnd y'a ca:
CWnd::WindowProc  qui a le meme role que ce que Moustaki t'a indique donc creuse un peu la doc et les samples fournis avec

mood
Publicité
Posté le 31-05-2001 à 11:31:09  profilanswer
 

n°35961
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 31-05-2001 à 11:33:02  profilanswer
 

Fais pas du MFC, c'est pas bien.   ;)  
 
 
non, fais ce que tu veux, j'ai jamais essayer MFC

n°35971
wpk
Posté le 31-05-2001 à 11:44:18  profilanswer
 

c'est vrai que c'est pas la joie les mfc, mais une fois qu'on a vendu son ame au bilou, on doit payer jusqu'a la fin de ses pauv jours de programmeur :sweat:

n°36031
El_gringo
Posté le 31-05-2001 à 14:23:02  profilanswer
 

Moustaaki a écrit a écrit :

Fais pas du MFC, c'est pas bien.   ;)  
 
 
non, fais ce que tu veux, j'ai jamais essayer MFC




 
N'empêche que tu devrais, j'vois pas pourquoi tu dis que c pas bien, c carrément pratique les MFC, par exemple, avec les MFC, pour ton pb de de boite de dialogue pour l'ouverture ou la sauvegarde de fichiers, t'aurais même pas eu besoin de nous !!! :D  :D  :D  :D

n°36032
El_gringo
Posté le 31-05-2001 à 14:24:50  profilanswer
 

...je suis pas à fond, pro-MFC, mais, pour ceux qui connaissent, avouez que c qd même pratique souvent ! (je n'utilise pas QUE ça non plus !!)

n°36126
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 31-05-2001 à 16:32:48  profilanswer
 

El_gringo a écrit a écrit :

...je suis pas à fond, pro-MFC, mais, pour ceux qui connaissent, avouez que c qd même pratique souvent ! (je n'utilise pas QUE ça non plus !!)




 
je disais ça pour rire, c'était certe pas très drôle (pas du tout) mais j'ai jamais utilisé les MFC, ça fait 2 semaines que je fais de la prog sous win avec visual et je ne sais même à quoi ça ressemble, ces MFC...
 
d'ailleur, j'aimerais bien qu'on me montre des exemples de programmes simples fait avec MFC, pour voir.

n°36135
petoulachi
A fortiori, brigadier chef
Posté le 31-05-2001 à 16:46:50  profilanswer
 

bin le pb de programmer en MFC c que tu peux plus faire autres choses...
en restant sur du brut, bin tu peux passer a X-window sans trop de pb, car les fondements sont les memes.
 
Pour moi c mieu d'apprendre le general (quit a se faire chier), et d'etre adaptable partout !
 
 
et pour ça, he bin le Java c top  :sol:

n°36316
El_gringo
Posté le 01-06-2001 à 09:31:14  profilanswer
 

petoulachi a écrit a écrit :

bin le pb de programmer en MFC c que tu peux plus faire autres choses...
en restant sur du brut, bin tu peux passer a X-window sans trop de pb, car les fondements sont les memes.
 
Pour moi c mieu d'apprendre le general (quit a se faire chier), et d'etre adaptable partout !
 
 
et pour ça, he bin le Java c top  :sol:




 
Mais je connais le Java, Mr Petoulachi

n°36327
petoulachi
A fortiori, brigadier chef
Posté le 01-06-2001 à 09:57:50  profilanswer
 

Mais je sais bien, Mr el_gringo :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Gestion des évènements avec les MFC

 

Sujets relatifs
Cocher les menus avec les MFC en C++[Linux] Gestion des erreurs sous Apache
MFC, CString, écriture dans un fichier texte.Soucis de gestion de l'heure en c++
C++, MFC ---> petit détail... emmerdant qd même ![API/MFC] Comment créer un
Quels fichiers pour un projet VC++/MFC ???******** Gestion des scripts PHP sous Apache ********
Gestion des évènements avec les MFCGestion des évènements avec les MFC
Plus de sujets relatifs à : Gestion des évènements avec les MFC


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR