Cyr62110
Messages postés65Date d'inscriptionvendredi 10 février 2006StatutMembreDernière intervention21 octobre 2009
-
21 oct. 2006 à 14:32
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 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.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 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).