akadis
Messages postés2Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention12 octobre 2007 12 oct. 2007 à 00:56
Dans la boucle d'écoute des évènements si on remplace le
while (GetMessage(&MessagesAEnvoyer, hFenetre, 0, 0))
par
while (GetMessage(&MessagesAEnvoyer, NULL, 0, 0))
Ca résoud le problème :)
cs_LaPatoshe
Messages postés53Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 décembre 2009 11 oct. 2007 à 22:50
Bonsoir, il y a un moment maintenant que j'avais écrit ce code, essaies de voir ce que cela donne en enlevant les return 0 de la partie des traitement des messages.
Ainsi, le retour de boucle se fera en renvoyant les paramètres DefWinProc.
akadis
Messages postés2Date d'inscriptionjeudi 22 juillet 2004StatutMembreDernière intervention12 octobre 2007 11 oct. 2007 à 17:23
Bonjour, je travaille sous Visual C++ et je rencontre aussi ce problème. C'est à dire que lorsque je ferme la fenêtre soit en cliquant sur la croix, soit en cliquant sur l'icône puis en faisant Fermer, la fenêtre disparait mais le processus tourne toujours.
Existe t'il un façon "propre" (sans killer le processus) pour terminer l'application ?
cs_LaPatoshe
Messages postés53Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 décembre 2009 15 avril 2007 à 18:07
Bonjour, cela veut il dire que la fenêtre se ferme, mais que le programme tourne toujours et apparait encore de ce fait dans les processus actifs de Windows ?
tennisdev44
Messages postés1Date d'inscriptionmercredi 17 mai 2006StatutMembreDernière intervention15 avril 2007 15 avril 2007 à 07:23
Bonjour,
Quand je place PostQuitMessage(0) dans WM_DESTROY, le programme ne se ferme pas complètement. Quand je le met dans WM_CLOSE ça ne change rien...
Je travaille sous dev c++ en projet Win 32 GUI
Sauriez vous pourquoi le programme ne se ferme pas complètement?
Chubab
Messages postés11Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention19 mai 2009 11 mai 2006 à 22:14
Merci BruNews,
j'ai trouver le probleme...c'est pcq PostQuitMessage(0) est dans WM_DESTROY alors quil devrait etre dans WM_CLOSE!
Et voila!,
Chubab!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 11 mai 2006 à 20:56
Si tu as PostQuitMessage(0); de correctement mis alors ça sort à tout coup.
Variable 'stop' est absolument à supprimer.
Chubab
Messages postés11Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention19 mai 2009 11 mai 2006 à 20:09
salut! jai reussi à compiler! je ne savais tout simplement pas que nous devions etre dans un project win32! dsl!
quand je nutilise pas while(!stop) par contre jessaye de fermer le programme...mais il continue a rouler dans le background et prend tout mon cpu(ce qui nest pas le cas avant que je passe par WM_DESTROY)...je dois ensuite le fermer a laide de ctrl-alt-del...
quelqu'un sait pourquoi??
Merci,
CHUBAB!
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 11 mai 2006 à 10:07
Faut faire un projet Win App GUI et non pas console.
cs_LaPatoshe
Messages postés53Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 décembre 2009 11 mai 2006 à 02:14
salut. Ne travaillant pas avec le C++.Net, si c'est avec cette version que tu as des problèmes, je ne vois pas trop d'où cela peut venir. D'après le message d'erreur, on dirait qu'il faille que tu enlèves des fichiers intermédiaires (peut être des fichier générés automatiquement lors de la création de ton appli et entrant en conflit avec #include <windows.h> du programme) encore que je n'en soit pas sûr.
Sinon, le tutorial 1 est à l'adresse suivante :
http://www.cppfrance.com/codes/CPLUSPLUS-SOUS-WINDOWS-SANS-MFC-TUTORIAL_24022.aspx A+
Chubab
Messages postés11Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention19 mai 2009 10 mai 2006 à 04:44
jai bien aimé cette source, mais j'ai toujours la même erreur quand je build ce programme dans visual studio....
PS: j'aimerais voir le premier tutoriel aussi...je ne le trouve pas...
hugues7E5
Messages postés12Date d'inscriptionjeudi 30 novembre 2000StatutMembreDernière intervention29 janvier 2006 29 janv. 2006 à 19:03
toujours simpa de lire tes tutos, mais heureusement que BruNews est là pour corriger les erreurs!
Apres correction, ça marche.
Merci.
cs_LaPatoshe
Messages postés53Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention19 décembre 2009 19 janv. 2006 à 02:32
salut. En fait, j'ai repris l'ancien listing du tuto 1 et effectivement, m^me si le prog fonctionne comme ça, il y a quelques trucs qui peuvent sauter aux yeux de par leur inutilité et le gaspillage de ressources qu'ils entrainent (while stop par exemple). Pour ce qui est de hFenetre, j'ai directement utilisé le Handle de la fenêtre crée et non son paramètre passé en WinProc. C'est vrai qu'il semble beaucoup plus logique d'utiliser le paramètre hWnd.
Dès que j'aurai une minute ou deux, je ferai une petite mise à jour.
A+
cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014 19 janv. 2006 à 02:26
L'idée est bonne mais il y a des ptit problème à regarder :( Bon te reste qu'a suivre les conseils de brubru et d'éventuel autres posteurs. Je reviendrai voir plus tard.
A+
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 19 janv. 2006 à 00:07
hDC = GetWindowDC(hFenetre); que fait cela ici ???
PAINTSTRUCT Ps;
hDC = BeginPaint(hFenetre, &Ps);
d'où vient ce 'hFenetre' ??? c'est hwnd, 1er param de la winProc.
Quand on traite WM_PAINT on ne repasse pas à DefWindowProc() mais on retourne 0.
while (!stop) ??? Ouate Isis ??? (en english...)
à changer en:
while(GetMessage(....)) {
TranslateMessage(...);
DispatchMessage(...);
}
12 oct. 2007 à 00:56
while (GetMessage(&MessagesAEnvoyer, hFenetre, 0, 0))
par
while (GetMessage(&MessagesAEnvoyer, NULL, 0, 0))
Ca résoud le problème :)
11 oct. 2007 à 22:50
Ainsi, le retour de boucle se fera en renvoyant les paramètres DefWinProc.
11 oct. 2007 à 17:23
Existe t'il un façon "propre" (sans killer le processus) pour terminer l'application ?
15 avril 2007 à 18:07
15 avril 2007 à 07:23
Quand je place PostQuitMessage(0) dans WM_DESTROY, le programme ne se ferme pas complètement. Quand je le met dans WM_CLOSE ça ne change rien...
Je travaille sous dev c++ en projet Win 32 GUI
Sauriez vous pourquoi le programme ne se ferme pas complètement?
11 mai 2006 à 22:14
j'ai trouver le probleme...c'est pcq PostQuitMessage(0) est dans WM_DESTROY alors quil devrait etre dans WM_CLOSE!
Et voila!,
Chubab!
11 mai 2006 à 20:56
while(GetMessage(&msg, 0, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
Si tu as PostQuitMessage(0); de correctement mis alors ça sort à tout coup.
Variable 'stop' est absolument à supprimer.
11 mai 2006 à 20:09
quand je nutilise pas while(!stop) par contre jessaye de fermer le programme...mais il continue a rouler dans le background et prend tout mon cpu(ce qui nest pas le cas avant que je passe par WM_DESTROY)...je dois ensuite le fermer a laide de ctrl-alt-del...
quelqu'un sait pourquoi??
Merci,
CHUBAB!
11 mai 2006 à 10:07
11 mai 2006 à 02:14
Sinon, le tutorial 1 est à l'adresse suivante :
http://www.cppfrance.com/codes/CPLUSPLUS-SOUS-WINDOWS-SANS-MFC-TUTORIAL_24022.aspx
A+
10 mai 2006 à 04:44
Deleting intermediate files and output files for project 'win app - Win32 Debug'.
--------------------Configuration: win app - Win32 Debug--------------------
Compiling...
win app.cpp
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/win app.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
win app.exe - 2 error(s), 0 warning(s)
Savez-vous pourquoi??...Merci!
PS: j'aimerais voir le premier tutoriel aussi...je ne le trouve pas...
29 janv. 2006 à 19:03
Apres correction, ça marche.
Merci.
19 janv. 2006 à 02:32
Dès que j'aurai une minute ou deux, je ferai une petite mise à jour.
A+
19 janv. 2006 à 02:26
A+
19 janv. 2006 à 00:07
PAINTSTRUCT Ps;
hDC = BeginPaint(hFenetre, &Ps);
d'où vient ce 'hFenetre' ??? c'est hwnd, 1er param de la winProc.
Quand on traite WM_PAINT on ne repasse pas à DefWindowProc() mais on retourne 0.
while (!stop) ??? Ouate Isis ??? (en english...)
à changer en:
while(GetMessage(....)) {
TranslateMessage(...);
DispatchMessage(...);
}
A remanier en profondeur.