Temps d'attente entre deux commandes

Signaler
Messages postés
17
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
12 février 2004
-
Messages postés
40
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
25 février 2004
-
Comment laisser un temps d'attente (paramétrable) entre deux lignes de commandes en C? Ca me serait très utile :-)

(J'ai pas très bien compris l'histoire de WM_TIMER dans l'aide, à mon avis il doit y avoir plus simple; enfin j'espère)

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Mets un exemple de ce que tu voudrais et surtout le contexte (win32 ou autre...).
BruNews, ciao...
Messages postés
17
Date d'inscription
samedi 20 décembre 2003
Statut
Membre
Dernière intervention
12 février 2004

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
// En-tete habituelle, j'abrège :-)
(...etc)
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
int i,j,w=0;
PAINTSTRUCT ps ;
HBRUSH hBrush ;
RECT rect ;

// Ici j'ai des déclarations de variables

switch (message)
{
case WM_PAINT:
{hdc = BeginPaint (hwnd, &ps) ;
for (i = 0 ; i <= 600 ; i+=10)
{MoveToEx (hdc, 0, i, NULL) ;
LineTo (hdc, 800, i) ;}
for (j=0; j<= 800; j+=10)
{MoveToEx (hdc, j, 0, NULL) ;
LineTo (hdc, j, 600) ;}
do

{w+=1;
SetRect (&rect, 10*px+10, 10*py+10, 10*px, 10*py) ;
hBrush = CreateSolidBrush (RGB (50, 200, 100)) ;
hdc = GetDC (hwnd) ;
SetRect (&rect, 10*Px+10, 10*Py+10, 10*Px, 10*Py) ;
hBrush = CreateSolidBrush (RGB (0, 100, 200)) ;
hdc = GetDC (hwnd) ;
FillRect (hdc, &rect, hBrush) ;
ReleaseDC (hwnd, hdc) ;
DeleteObject (hBrush) ; /* me demande si c très adroit tout ça, mais ça marche pour l'instant :-/ */

**** c'est ici que j'aimerais bien laisser qqes dixièmes de seconde **** }

while (w<=1000);
return 0 ;}
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}

Merci d'avance!
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Un truc simple, tu crees un event
hevt = CreateEvent(...);
avant ta boucle.
a chaque tour de boucle, prends le temps en entree, temps en sortie (apres DeleteObject(hBrush);), tu vois combien il te manque en attente et avec la difference tu fais un:
WaitForSingleObject(hevt, diff);
BruNews, ciao...
Messages postés
40
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
25 février 2004

utilisez simplement sleep(int) ou Sleep(int)
avec comme paramètre le nombre de secondes (ou de millisecondes je sais plus trop)

jpeg