Eviter le (ne répond pas) ?

Résolu
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008 - 14 août 2005 à 12:18
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 14 août 2005 à 19:58
Bonjour, je fais un programme qui uploade des fichiers sur un serveur
assez facilement (je le posterais des qu'il sera fini). Le probleme est
que lors d'un click sur la fenetre apres 2 sec il rajoute (ne répond
pas) je suppose que c'est parce que windows n'arrive pas a obtenir le
return du call back de la fenetre ce qui veux dire pour lui que le prog
est planté (ce qui est un peu vrai dans le sens ou il tourne en boucle
...) Comment faire pour intercepter ses messages sans pour autant créer
une nouvelle thread et en evitant si possible les timers (je veux pas
ralentir l'ul qui est exelent) ?

Merci de vos réponses, je vais quand meme me renseigner sur les threads en attendant.

14 réponses

MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
14 août 2005 à 13:21
je viens de voir oui et de toute facon les perfs sont désastreuse comme
ça. Le tps d'iteration de la boucle étant assez faible (envois d'un
paquet de 1 Ko sur le net apres la lecture sur le disque).

Donc, je créé une thread et pour savoir si elle est fini variable globale (pourquoi se faire chier quand on peux faire simple).

Voila, bon ben merci encore et a la prochaine pour de nouvelles aventure sur un flot de bits.
3
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
14 août 2005 à 18:11
euh en fait pour savoir si elle était fini j'ai pas utilisé ça, j'ai
fais SendMessage(hwnd,666,0,0); et dans mon call back j'ai mis case 666:



Pour le 666 je me suis dit qu microsoft aurait jamais eu l'idée de
mettre ça mdr, j'avais la flemme d'aller chercher. Par contre la
variable globale m'a servie a connaitre le résultat.
3
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
14 août 2005 à 12:20
ah j'oubliais, a chaque boucle j'ai un UpdateWindow qui tourne pour
afficher les infos sur la fenetre (vitesse d'ul, tps restant, progress
bar)
0
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
14 août 2005 à 13:09
ah ben résolu par tout simplement ceci



MSG message;

if(GetMessage (&message, NULL, 0, 0))

{

TranslateMessage (&message);

DispatchMessage (&message);

}



Vous placez ça dans la boucle et comme ça ça permet que si ya des messages, ben qu'ils soit traités donc c'est nickel.

Enfin c'est une idée a moi, mais si elle est mauvaise dites le moi.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 août 2005 à 13:15
La solution d'un thread me semble plus logique, car avec ta méthode il n'est pas sur que tous les messages seront traités rapidement (ca dépend du temps d'itération de ta boucle)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 août 2005 à 13:28
+1 pour la variable globale
0
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
14 août 2005 à 18:09
Bon, ça marche au poil, xterm in hate m'avait conseillé BOOST pour les
threads, mais vus que cpp france n'était pas accessible lorsqu'il ma
dit ça j'ai pas pus aller voir sa source, j'ai donc utilisé les api,
j'ai pas trouvé ça trop dur (meme assez simple pour ainsi dire). Donc,
je posterais ce fabuleux prog des qu'il aurat été beta testé par moi et
des potes.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 août 2005 à 18:17
Utilise les constantes prédéfinies pour les messages persos:
#define ENDTHREAD (WM_USER+1)

toujours WM_USER+xxx

ciao...
BruNews, MVP VC++
0
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
14 août 2005 à 18:26
j'avais suivis ce conseil seul probleme, c'est que quand je l'utilisais
ben le call back plantais a chaque message autre que initdialog, donc
... je me suis fais le mien comme ça no prob, n'y aurait-il pas une
liste ? car sur msdn il faut les connaitres pour les trouver et savoir
leurs code (hexa)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 août 2005 à 18:42
Avec le MSDN installé en local c'est ultra simple, on met WM_ en recherche dans le second onglet et on a toute la liste devant soi.
Sinon sur MSDN web, vrai que c'est plus galère (pour un handicapé du web comme moi).

ciao...
BruNews, MVP VC++
0
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
14 août 2005 à 18:54
disons que j'ai la locale mais la 6, donc, un peu viellote depuis 98.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 août 2005 à 19:40
bof, les nouveaux messages de fenêtres ne doivent pas être très nombreux.

ciao...
BruNews, MVP VC++
0
MuPuF Messages postés 536 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 22 août 2008
14 août 2005 à 19:49
oui mais sur les commandes qui on un rapport avec IE, ben ... lol ça a
changé, j'ai dus aller les chercher sur msdn web (au passage je le
trouve tres mal organisé et le meilleur moyen de trouver un truc sur ce
site c'est encore d'utiliser .... google)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 août 2005 à 19:58
vrai qu'on passe tous par google pour trouver un truc sur MSDN web, doit pas être évident d'organiser + de 4 Go d'info.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous