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

 


Dernière réponse
Sujet : Question à priori basique en VC++
Kyle_Katarn effectivement

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Kyle_Katarn effectivement
MiniCooler c'est vrai, sleep ne fait que mettre en pause le thread en cours; alors que ce que je t'ai proposé devrait faire a peu près ce que fait DoEvents
Kyle_Katarn non car sleep crée un pause ou rien ne sefait et d'une durée limitée fixe alors que Doevents attends que Win ai "fini" pour reprendre.
 
mais je vais essayer de me débrouiller avec ça !
merci à vous tous.
tsr si tu veut pas te faire chier !
dans ta boucle tu met l'instruction "Sleep(nbmilliseconde);"
MiniCooler A mon avis, voici ce que fait ton DoEvents
 
MSG msg ;  
// Read all of the messages in this next loop,  
// removing each message as we read it.
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))  
{  
     // Dispatch the message.
     DispatchMessage(&msg);  
}
bat Un exemple de la méthode "sans 2eme thread" dans le topic :
Faire une pause dans l'éxécution d'une boucle en C++ ?
bat Pour ce que j'ai dit au niveau des MFC, il semblerait que ce soit faux.  
Dsl !
bat Alors là, c'est beaucoup plus subtile qu'en VB ...
En effet, si tu veux effectuer deux taches en meme temps, le mieux c'est quand meme de creer un thread et d'éxecuter ton traitement long dedans, ce sera plus efficace.
Sinon, il faut vérifier à intervalle régulier si il y a de nouveaux messages dans la pile des messages Windows de l'appli
et les transmettre à la procedure WindowsProc de ton appli (c'est ce que fait la methode idle() de CWinApp dans les MFC).
 
En espérant t'avoir aider.
a+
Kyle_Katarn Accessoirement on s'en sert aussi en client serveur par winsock pour faire des boucles d'attente (while...) avec uniquement un doevetns dedans ce qui permet d'attendre le réponse de l'autre poste
Lord II Le doevents permet ( enfin c'est mon idée et la msdn) de rendre la main au systeme pendant l'execution d'un traitement long.
 
On l'utilise par exemple a la fin des instruction d'une boucle très longue ou lors de l'appel d'un prog externe dont le tps d'execution peut etre variable
darkoli je connais bien VC++ mais pas du tout VB, alors c'est quoi "DoEvents" ?
Kyle_Katarn Bonjour,
 
Vous devez être d'accord avec moi, ce qui peut être fait en VB peut aussi l'être en VC++.
 
Alors maintenant donnez moi le code VC++ du DoEvents de VB...

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)