Bonjour,
Je réalise actuellemnent un casse-briques sous visual c++ 6.0 et j'ai un problème concernant la fonction OnTimer().
J'en suis au stade ou j'anime la balle dans la fenetre en la faisant
rebondir sur les bord. Pour cela dans la fonction OnKeyDown:
if(nChar==VK_SPACE)
SetTimer(1,10,NULL);
dans la fonction OnTimer
RedrawWindow(pDoc->p_part->p_bal->rect);
C'est a dire je decide de redessiner uniquement la balle.
Je possede une classe CPartie, et une classe Cballe.
J'ai créé un pointeur CPartie (p_part) dans le Doc et un pointeur
CBalle (p_bal) dans la classe CPartie. D'ou le
pDoc->p_part->p_bal->rect2.
Dans la classe CBalle j'ai créer un rect de la classe CRect que j'ai
instancié dans le constructeur.J'ai également créé une fonction
deplacement_balle() qui m'incrémente les points de la balle défini dans
le rect.SetRect(...).
Pour finir voila le code inscrit dans la fonction OnDraw(CDC* pDC) :
CPen pen1(PS_NULL,5,RGB(0,221,255));
pDC->SelectObject(&pen1);
CBrush brush3 (6,COULEUR_BALLE);
pDC->SelectObject(&brush3);
pDoc->p_part->p_bal->deplacement_balle();
pDC->Ellipse(pDoc->p_part->p_bal->rect2);
Je passe les détails des condition pour le rebondissement mon problème ne venant pas de la.
Bref, tout cela pour en venir a mon probleme :
Lorsque je lance le jeux tout fonctionne à merveille, la balle se
deplace, elle rebondit, oui... mais pendant environ une trentaine de
seconde, car tout a coup sans aucune raison (apparente!!) un message
d'erreur apparait :
Je cite : L'instruction à "0x5f43dfb1" emploie l'adresse mémoire "0x00000004" la mémoire ne peut pas etre "read".
Arggggggggggggggg!!!!
Je ne vois vraiment pas d'ou peut venir le problème, je sais que le
problème viens de la fonction OnTimer() mais je ne sais pas ce que j'ai
mal fait. J'ai essayé de faire un KillTimer(o) puis une relance
immédiate, même problème!!
Pouvez vous m'aider s'il vous plait;
J'ai aussi un autre petit probleme mais bien moins important que je posterait dans un autre message.
Je vous remercie de l'attention que vous avez porté a mon message.