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

  FORUM HardWare.fr
  Programmation
  C++

  [VC++] Equivalent du DoEvents de VB (pour pas "tout bloquer").

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VC++] Equivalent du DoEvents de VB (pour pas "tout bloquer").

n°55936
Kyle_Katar​n
Posté le 28-08-2001 à 23:27:27  profilanswer
 

comment on fait ? car mon appli fait une "grosse opération" (copie massive de données sur le disque) j'ai un btn "cancel" mais on peut pas clicker dessus (car le PC "mouline" ). Ave VB, un doevents marcherait mais... comment fait on en VC++ ? j'ai beau passer le thread et le process en IDLE, rien n'y fait ....

mood
Publicité
Posté le 28-08-2001 à 23:27:27  profilanswer
 

n°55939
aqwsezsxdr
Posté le 28-08-2001 à 23:35:59  profilanswer
 

tu rajoute un 2eme thread : l'operation gourmande en tps cpu, tu la mets dans un 2eme thread => le thread principal peut ecouter la file de msg de zindows.
 
pour les threads, si tu utilise la MFC, c'est AfxBeginThread, sinon _beginthread

n°55940
Kyle_Katar​n
Posté le 28-08-2001 à 23:37:49  profilanswer
 

ça va, j'ai une autre méthode (j'utilise déjà un 2nds thread...)
 
(le code est pas mis en forme.....)
 
BOOL CApp::DoEvents(){        MSG msg;        while ( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )        {                if ( !PumpMessage( ) )                {                        ::PostQuitMessage( 1 );                        return FALSE;                }        }        // let MFC do its idle processing        LONG lIdle = 0;        while ( OnIdle(lIdle++ ) )                ;        return TRUE;}

n°55941
Kyle_Katar​n
Posté le 28-08-2001 à 23:38:07  profilanswer
 

BOOL CApp::DoEvents(){        MSG msg;        while ( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )        {                if ( !PumpMessage( ) )                {                        ::PostQuitMessage( 1 );                        return FALSE;                }        }        // let MFC do its idle processing        LONG lIdle = 0;        while ( OnIdle(lIdle++ ) )                ;        return TRUE;}

n°55942
aqwsezsxdr
Posté le 28-08-2001 à 23:40:10  profilanswer
 

c'est illisible ton truc  :lol:

n°55944
aqwsezsxdr
Posté le 28-08-2001 à 23:46:01  profilanswer
 

et avec un 2eme thread, t'as toujours un probleme d'interactivité avec ta gui ? C'est pas normal du tout.

n°55972
Carbon_14
Posté le 29-08-2001 à 09:04:38  profilanswer
 

Sous WIN3 et WIN32, j'utilise Yield() "quand il faut". Ca permet de redonner la main au système pour lire les messages en attente, voir si on a frappé sur ESCAPE, etc..
 
Bien que "multitâche" (??) Win32 perd la main si on écrit un programme qui boucle de façon infinie.  :(


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [VC++] Equivalent du DoEvents de VB (pour pas "tout bloquer").

 

Sujets relatifs
Un équivalent de ex-PopListY a t-il un "SetPosition" ou équivalent dans les RecordSet (ASP) ?
Ya t-il un equivalent en JavaScript à la function include en php...??[Visual C++] Equivalent de mailto:
[VB] Equivalent expressions régulières Javascript (ex : /[a-z0-9]/g)[java] y'a un equivalent de colorchooser dans awt
[javascript] l'équivalent de trim() en PHP ?[quick basic] l'equivalent du delay() du c?
[html] équivalent Netscape de topmarginequivalent de select ... limit 0, 10 sur sql server ?
Plus de sujets relatifs à : [VC++] Equivalent du DoEvents de VB (pour pas "tout bloquer").


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR