Un truc tout bête surement ...

GreatNeo Messages postés 13 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 23 avril 2007 - 20 mars 2003 à 20:28
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 - 20 mars 2003 à 22:05
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

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
20 mars 2003 à 21:52
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 mars 2003 à 22:02
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...
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
20 mars 2003 à 22:05
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
0
Rejoignez-nous