Un truc tout bête surement ...

Signaler
Messages postés
13
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
23 avril 2007
-
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
-
voila le problème,
je suis sous vc++ en win32. je crée un timer avec un intervalle donné et à chaque WM_TIMER j'appelle la fonction suivante:
void dessine(int x){
hdc = BeginPaint(hwnd,&ps);
SelectObject(hdc, CreatePen(PS_SOLID, 1, RGB(255, 0, 0)));
MoveToEx(hdc, x, 0, NULL);
LineTo(hdc, x, 500);
EndPaint(hwnd,&ps);
}

Elle est censée me dessiner une ligne mais rien n'apparait dans la fenêtre, pourtant j'ai vérifier et la fonction est appelé correctement. Si quelqu'un sait donc çà vient, merci d'avance ...

3 réponses

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

A première vue ton code devrait fonctionner, attention tout de même à l'allocation/désallocation des objets GDI. Le code si dessous libére le "stylo" qui tu crées:

void dessine(int x)
{
PAINTSTRUCT &ps;
HDC hdc=BeginPaint(hwnd,&ps);
HPEN hMyPen=CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
HGIOBJ hOldObj=SelectObject(hdc, hMyPen);

MoveToEx(hdc, x, 0, NULL);
LineTo(hdc, x, 500);

SelectObject(hdc, hOldObj);
DeleteObject(hMyPen);

EndPaint(hwnd, &ps);
}

Sinon tu as testé quelles étaient les différentes valeurs de 'x', s'il reste bien dans la fenêtre ?

Kaid - kaid.fr.st
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
hdc = BeginPaint(hwnd,&ps);
INVALIDE hors de du message WM_PAINT, il faut placer ton code dedans ou refaire ta func.
hdc = GetDC(hwnd);
mais preferer la 1ere solution, tu prepares les params et ton timer fait InvalidateRect(...). Ainsi fonctionnera.
BruNews, ciao...
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Ah oui, comme le souligne BruNews, j'espère quand même que tu es dans une fonction traitant le message WM_PAINT :-)

Kaid - kaid.fr.st