Temps d'attente entre deux commandes

Ben0007 Messages postés 17 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 12 février 2004 - 29 déc. 2003 à 19:33
cs_jpeg Messages postés 40 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 25 février 2004 - 30 déc. 2003 à 09:43
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 déc. 2003 à 20:53
Mets un exemple de ce que tu voudrais et surtout le contexte (win32 ou autre...).
BruNews, ciao...
0
Ben0007 Messages postés 17 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 12 février 2004
29 déc. 2003 à 22:15
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!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 déc. 2003 à 22:35
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...
0
cs_jpeg Messages postés 40 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 25 février 2004 1
30 déc. 2003 à 09:43
utilisez simplement sleep(int) ou Sleep(int)
avec comme paramètre le nombre de secondes (ou de millisecondes je sais plus trop)

jpeg
0
Rejoignez-nous