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:
Code :
- if(nChar==VK_SPACE)
- SetTimer(1,10,NULL);
|
dans la fonction OnTimer
Code :
- 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) :
Code :
- 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.