Un probleme de dessin [Résolu]

Signaler
Messages postés
65
Date d'inscription
vendredi 10 février 2006
Statut
Membre
Dernière intervention
21 octobre 2009
-
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
-
Boujour à Tous!
Voila mon probleme , j'essaye de faire un logiciel dessinant une courbe mais dès que la fenetre s'ouvre, elle se referme et cela est du à WM_PAINT
Voici le bout de code:
case WM_PAINT:
             HDC hDC;
             PAINTSTRUCT ps;
             POINT pos;
             hDC = BeginPaint (hwnd,&ps);
             Polygon (hDC,Poly,4 );
             MoveToEx (hDC,425,10,&pos);
             SelectObject (hDC,absord);
             LineTo(hDC,425,310);
             LineTo(hDC,775,310);
             //---
             MoveToEx (hDC,firstx,secondy,&pos);
             SendMessage (hwnd,WM_USER,0,0);
             for (paint = 0; paint <= xmax;paint+=dist)
             {
                 x = firstx + (paint*refx);
                 y = secondy - (2*paint*refy);
                 LineTo (hDC,x,y);
                 sprintf (egal,"%d=%d=>",x,y);
                 strcat (edit,egal);
                 SetWindowText (hchiffre,edit);
             }
             for (paint = 0; paint <= xmax;paint+=dist)
             {
                 MoveToEx (hDC,firstx,secondy,&pos);
                 x = firstx + (paint*refx);
                 MoveToEx (hDC,x,310,&pos);
                 LineTo (hDC,x,305);
             }
             for (paint = 0; paint <= 10; paint++);
             {
                 MoveToEx (hDC,firstx,secondy,&pos);
                 y = secondy - (paint*refy);
                 MoveToEx (hDC,425,y,&pos);
                 LineTo (hDC,420,y);
             }
             //---
             EndPaint (hwnd,&ps);
             break;
Merci d'avance pour votre aide.
Bye
P.S: Je n'ai commencer le WinAPI, il n'y as pas longtemp.

2 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Lance le debuggeur pour savoir où ça plante exactement. Ensuite:


SendMessage (hwnd,WM_USER,0,0); ?????


aussi:


sprintf (egal,"%d=%d=>",x,y);

strcat (edit,egal);


Ce pourrais bien être ça le problème.

Je vois que tu concatène egal à edit. Cependant, on ne vois pas dans
ton extrait l'endroit où tu alloue la mémoire pour egal et edit. De
plus, ton egal n'a pas l'air d'avoir un nombre de caractères constant
ce qui fais que l'on ne sais pas exactement la mémoire nécessaire. Si
tu n'alloue pas suffisament de mémoire pour edit et egal, le programme
plantera car il essera d'entrer sur des zones mémoire voisine. Il y
aura débordement tampon (buffer overflow).

C++ (@++)<!--

<!--
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
62110 Hénin beaumont
J' habite à côté :)
Internet est petit quand même :)

ULARGE_INTEGERJokyQi=QI("Joky"