: 2quivalent de DoEvents [VC++] - Programmation
Marsh Posté le 05-02-2001 à 12:17:02
Le mieux c'est que tu encapsules tes appels à Winsock dans des threads.
Marsh Posté le 05-02-2001 à 12:53:07
Si je me souviens bien , la fonction DoEvents de VB sert à rafraichir les messages windows de l'application.ss
Je pense que tu veux que l'affichage de la fenetre soit rafraichi pendant que tu recois les paquets TCP. Si la reception des paquets se fait par un appel fonction, c'est normal que la fenetre ne soit pas rafraichie ( en effet les messages windows ne seront traites qu'a la fin de l'execution de cette fonction).
Il y a 2 facons de remedier à ce problème :
ssss- A chaque tour de boucle de la fonction, faire l'appel suivant
if (GetMessage(&msg, NULL, 0, 0)) {
ssssssss TranslateMessage(&msg);
ssssssss DispatchMessage(&msg);
}
ceci permettra le traitement des messages windows à chaque tour de boucle. ( c'est l'équivalent du DoEvents en VB)
ssss - Methode plus "propre" : Créer un thread auxiliaire qui s'occupera de récupérer les paquets TCP. Ainsi, ton application aura toujours la main et pourra gérer ses messages.
Il faut utiliser la fonction CreateThread pour créer un thread.
Marsh Posté le 05-02-2001 à 13:05:48
En fait la fonction DoEvents rend la main au systeme de facopn à ce que celui-ci fasse ce qu'il a à faire.
Utilisation dans une boucle qui est assez longue à chaque fin de passage on appel DoEvents...
Trouvé dans une fonction de remplacement de shellexecute sur le portail c2i je crois
Marsh Posté le 05-02-2001 à 08:27:16
Après de longues année d'amusement fou sous VB ave Winsock, je décide de porter tout ça en VC++6.0
Mais comment "simuler" le DoEvents de VB, ce qui permet de donner une temporisation au système, le temps qu'il reçoive les paquets TCP ?