Win api : programme qui plante à cause des images

Win api : programme qui plante à cause des images - C - Programmation

Marsh Posté le 25-08-2006 à 15:17:51    

Bonjour,  
 
 voilà je me lance dans l'api win32 et j'ai fait un petit programme dont voici le code en lien  ici.
 
Tout fonctionne mais au fur et à mesure que j'utilise les boutons, le programme semble s'essouffler devenir moins rapide, je perds l'image du curseur.
J'ai testé le programme sans image, tout va bien. Le programme ne s'essoufle pas.
 
Si vous voulez vous pouvez tester avec les images. Voici l'executable + dossier images  :ici.
 
La question : qu'est ce qui ne marche pas ?  
Une autre : si vous n'avez pas le temps , pourriez vous au moins me donner une piste ? Qu'est ce que ça vous évoque ? Quelles genres d'erreurs provoque ça ?
 
 
Merci pour vos réponses !  :)  

Reply

Marsh Posté le 25-08-2006 à 15:17:51   

Reply

Marsh Posté le 25-08-2006 à 15:44:51    

Tu dois oublier de libérer ds ressources pour l'affichage des images, je n'ai pas lu ton source mais il doit manquer des ReleaseDC et autres DeleteObject

Reply

Marsh Posté le 25-08-2006 à 16:17:01    

Je sais j'avais passé et rererepassé mon code pour voir si je n'avais pas oublié de le faire quelque part. Mais en fait c'était une boucle !!
 
J'ai trouvé ce qui ne marchait pas si ça interesse quelqu'un ?
 
J'ai un tableau de 70 boutons et comme j'avais modifié le curseur de l'application il fallait que je le fasse aussi de façon séparée pour les autres fénêtres donc pour les boutons et j'ai ecrit ceci :

Code :
  1. case WM_CHANGERCURSEUR:
  2.         //Modifier le curseur.des boutons
  3.        for (i=0;i<70;i++)
  4. {
  5.        SetClassLong(hBouton[i], //handle d'un bouton
  6.                      GCL_HCURSOR,
  7.                     (long int)LoadCursorFromFile (curseur));
  8. }
  9.         return 0;


 
 
 
Donc chaque fois qu'il fallait redessiner les boutons le programme passait sur la boucle... et c'etait fréquent !
 
J'ai essayé de ne définir que le bouton 0 et miracle ça marche le curseur s'affiche aussi sur tous les autres boutons.
 
ce qui donne :  
 
 
 

Code :
  1. case WM_CHANGERCURSEUR:
  2.         //Modifier le curseur.des boutons
  3.         SetClassLong(hBouton[0], //handle d'un bouton
  4.                      GCL_HCURSOR,
  5.                     (long int)LoadCursorFromFile (curseur));
  6.         return 0;


 
 
Je ne sais pas pourquoi mais ça marche !   :)

Reply

Marsh Posté le 25-08-2006 à 16:30:00    

Pour infos :
La raison vient du fait que SetClassLong() concerne une classe (pas une classe C++, mais une classe Windows, c'est-à-dire un style de fenêtre), comme son nom l'indique.
Or tous les boutons font partie de la même classe.
Il existe un curseur (pointeur de la souris) par défaut par classe.
 :)

Reply

Marsh Posté le 25-08-2006 à 16:44:46    

Bon après reflexion j'y ai pensé !! Ah lala qu'est ce qu'on peut perdre comme temps pour des détails ! pffffffff
 :pt1cable:  
 
Et pour le handle du bouton.... on peut mettre n'importe lequel ?Pourquoi on ne mettrait pas un identifiant de la classe alors plutot que le handle d'une fenetre particulière ?
 

Reply

Marsh Posté le 25-08-2006 à 20:46:01    

acryline a écrit :

Bon après reflexion j'y ai pensé !! Ah lala qu'est ce qu'on peut perdre comme temps pour des détails ! pffffffff
 :pt1cable:  
 
Et pour le handle du bouton.... on peut mettre n'importe lequel ?Pourquoi on ne mettrait pas un identifiant de la classe alors plutot que le handle d'une fenetre particulière ?


Pourquoi tu n'utilises pas gtk+2 ?
 
http://www.gtk-fr.org/wakka.php?wiki=PageAccueil
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 25-08-2006 à 22:53:17    

Citation :


Pourquoi tu n'utilises pas gtk+2 ?
 
http://www.gtk-fr.org/wakka.php?wiki=PageAccueil


 
ET bien quand on débute on est un peu noyé dans toutes ces bibliothèques. Je me suis dit que gtk serait le mieux, c'est vers gtk queje me suis tournée en premier mais j'ai eu un mal fou à l'installer....(très très débutante à l'époque).
Alors que pour Win Api c'était très simple... rien à faire ... :pt1cable:  
 
Mais pas pour longtemps !  :heink:  
Effectivement c'est pas mal hardu et en plus je ne suis pas sure de continuer (pas portable, pas rapide pour coder)??
Bon je fini mon application et je vois.
 
Merci pour le lien en tout cas. Il me semble pas mal fait pour débuter.

Reply

Marsh Posté le 27-08-2006 à 18:45:53    

Trap D a écrit :


Je ne sais pas pourquoi mais ça marche !   :)


 
Commence par lire le Petzold, car ne pas savoir ça est gravissime, vu que c'est une notion de base.

Reply

Marsh Posté le 28-08-2006 à 07:27:02    

Gravissime, le mot est un peu lourd  je trouve, génant peut être  ?  :whistle:  
 
Gravissime pour moi c'est un cancer, une catastrophe naturelle.. Ok j'ai compris je l' ferai pus, promis..
Pas taper hein ?  
 
Et le principal : je SAIS pourquoi ça marche !   Alors heureux ?  :D


Message édité par acryline le 28-08-2006 à 07:33:50
Reply

Marsh Posté le 28-08-2006 à 11:58:15    

Citation :

Je ne sais pas pourquoi mais ça marche  ! :)


J'ai écrit ça moi ?  :pt1cable:

Reply

Marsh Posté le 28-08-2006 à 11:58:15   

Reply

Marsh Posté le 28-08-2006 à 13:50:33    

Y'a eu méprise  !  ;)
C'était moi je l'avoue .  :sweat: paraît que c'est pas bien  !  :non:


Message édité par acryline le 28-08-2006 à 13:51:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed