Un probleme de dessin

Résolu
Cyr62110 Messages postés 65 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 21 octobre 2009 - 21 oct. 2006 à 14:32
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 - 21 oct. 2006 à 23:49
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

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
21 oct. 2006 à 16:02
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++ (@++)<!--

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

ULARGE_INTEGERJokyQi=QI("Joky"
0
Rejoignez-nous