Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008
-
24 oct. 2004 à 21:42
Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008
-
2 nov. 2004 à 15:51
Bonjour, je suis actuellement sur un projet de logiciel de contrôle de heux de lumière. Je ne suis pas encore très avancé mais j'ai déjà un gros problème, cela fait maintenant 2 semaines que je lutte contre un souci d'affichage.
Mon projet contient une fenêtre principale et plusieurs fenêtres supplémentaires s'ouvrent lors de la sélection d'onglet dans le menu.
Si j'ouvre la fenêtre de détection du son, je lance la synchro, au bout de 2 minutes environ j'ai le droit à un plantage graphique, mes barres de titres de toutes les fenêtres me font n'importe quoi et les fenêtres elles-même ne se redessinent plus correctement.
Maintenant avec la fenêtre avec tous les potentiomètres après un certain nombre de manipulation des curseurs j'ai le même problème.
L'erreur survient au bout d'un certain nombre d'opération, elle n'est pas liée à une durée, si je ne fait rien avec les boutons ça ne plante pas, et pour le son si j'accélère le défilement du graphe et bien ça plante d'autant plus vite.
Je travaille en C sous devcpp , s'il vous plait aidez moi, je dois avois fait une bétise dans mon code mais pas forcemment à l'endroit où je cherche car j'ai tout retourné ou je pensais voir des erreurs et rien ne change.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 25 oct. 2004 à 08:49
A mon avis il y a une fuite de ressource. Lorsque tu dessine, il faut penser à détruire les objets graphiques créés (PEN, BRUSH...) et remettre les objets initiaux dans les DCs.
Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008 25 oct. 2004 à 12:31
Bon j'ai tout essayé, DeleteDC releaseDC , mettre mes variable hors de la fonction pour les creer qu'une fois, mettre mes fonctions au début pour ne pas les redéclarer mettre des return 0 à la place des break. Rien à faire ça plante toujours.
C'est vraiment ennuyeux, je peux plus avancer ça fait 2 semaines
que je cherche entre 1 et 6 heures par jour, je sais vraiment plus quoi faire. Le programme ne plante pas que chez moi, c'est pas du à mon ordi.
J'ai pas envie d'abandonner ça serait bête c'est pas trop mal parti si on oublie ce problème.
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 25 oct. 2004 à 14:38
Petite explication sur "remettre les objets initiaux". Voila comment se servir d'un DC (obtenu par BeginPaint ou GetDC)
- création des objets (HPEN, HBRUSH, HFONT, HBITMAP
HPEN hNewPen = CreatePen(...);
- sélection dans le DC pour utilisation. Lors de la première sélection d'un objet d'un certain type, il faut sauvegarder l'objet initial :
HPEN hOPldPen = (HPEN)SelectObject(hdc, hNewPen)
-dessin dans le DC
- remettre les objets initiaux
SelectObject(hdc, hOldPen);
- détruire les objets créés
DeleteObject(hNewPen);
en ce qui concerne le DC, voici les couples qu'il doit y avoir :
-Beginpain/EndPaint
ou
-GetDC/ReleaseDC
ou
-CreateCompatibleDC/DeleteDC
Vous n’avez pas trouvé la réponse que vous recherchez ?
Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008 25 oct. 2004 à 20:26
Rien à faire ça marche toujours pas la brush ne peut pas se supprimer, mais je pense pas que le problème vienne de là, les couples sont bons les select c'est bon aussi puis à l'origine le code vient d'un enregistreur audio qui marche et au niveau du graphe a part la position des lignes j'ai rien changé. c'est ailleur qu'il doit y avoir un problème.
J'y arrive vraiment pas et je suis en train de me décourager. ce qui est vraiment agaçant c'est que ça marche un certain temps.
zoom1984
Messages postés17Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention26 février 2005 26 oct. 2004 à 03:40
Yo
G récupéré ton source. Effectivement l'exe que tu fournis fini par trasher complètement le display. Mais je l'ai recompilé et j'ai commenté les fonctions waveIn... ( sais pas ce que c'est ) et là plus de problèmes ...
Donc à mon avis ton problème viens de là et pas de ton code Windows.
Je pourrais regarder + en avant, mais il faudrait que tu fournisse tout ( projet, solution, .lib éventuel )
Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008 26 oct. 2004 à 12:58
les fonctions wave in c'est pour l'acquisition audio, si elle ne se fait pas ça ne produit pas le redessin du graphe et donc ça ne doit pas planter si vite, pour le tableau avec plein de potentiommetre il faut bouger les curseurs pendant un bon 4 minutes pour que le bug apparaisse, c'est vraiment au bout d'un nombre d'opérations que ça arrive, si on bouge rien ça ne le fait pas.
J'ai réenvoyé le projet .dev la lib qui est linkée libwinmm.a (pour waveIn) et tout ce que j'ai trouvé d'autre en lien avec le projet.
Hier j'ai essayé aussi les options d'optimisation dans devcpp, compatibilité du code, thème xp, toujours pareil, ça plante.
Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008 27 oct. 2004 à 13:01
J'ai pensé à quelque chose, Mon projet est un projet avec une fenêtre mère et des fenêtre suplémentaire, donc une sorte d'environnement multifenêtre. Est-ce qui y aurait quelquechose à configurer ou a changer, du style passer en MDI ou changer le type de fenêtre ?
Je sais plus où chercher j'ai vraiment besoin d'un petit coup de pouce.
Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008 30 oct. 2004 à 14:08
J'en ai franchement marre je désespère ça va bientôt faire 3 semaine que j'ai cette saloperie de problème qui m'empèche de continuer correctement.
Y'a pas une autre méthode pour faire ce que je veux ? Parce-que là c'est plus possible c'est de pire en pire, ça me fait un écran gris complet ça m'emlève meme l'affichage de la barre de taches je doit repasser la souris dessus pour que ça se remette bien.
Je comprends plus j'ai essayé tous les codes proposée dans le site pour l'affichage et rien faire ça plante toujours d'une façon ou d'une autre.
Même le double buffering scintille encore et plante aussi, et avec un timer pour le taux de rafraichissement ça marche pas non plus.
Mastersam
Messages postés116Date d'inscriptiondimanche 26 septembre 2004StatutMembreDernière intervention13 février 2008 2 nov. 2004 à 15:51
Bon toujours rien de nouveau de mon coté.
J'ai vraiment pas envie d'abandonner, donnez-moi une nouvelle piste de recherche, ou l'erreur que j'ai faites, je demande pas forcemment la solution directe, mais de nouvelles idées sur le problème car j'en manque là.