|
Dernière réponse | |
---|---|
Sujet : Gestion des évènements avec les MFC | |
petoulachi | Mais je sais bien, Mr el_gringo :) |
Aperçu |
---|
Vue Rapide de la discussion |
---|
petoulachi | Mais je sais bien, Mr el_gringo :) |
El_gringo |
|
petoulachi | 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: |
Moustaaki |
|
El_gringo | ...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 !!) |
El_gringo |
|
wpk | 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: |
Moustaaki | Fais pas du MFC, c'est pas bien. ;) non, fais ce que tu veux, j'ai jamais essayer MFC |
wpk | 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 |
Moustaaki | 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] |
El_gringo |
|
topaz | [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 |
El_gringo | ...personne !? |
El_gringo |
|
wpk | 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) |
petoulachi | bin moé yé né sait pas ... |
El_gringo | Ma, pelsonne né veut aidé lé Gringo !? |
El_gringo | 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... |