IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

TCanvas et handle qui se désalloue tout seul


Sujet :

Langage Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut TCanvas et handle qui se désalloue tout seul
    J'utilise des TCanvas de Delphi(6) pour dessiner, que je deverse sur l'ecran avec l'api windows biblt et en ayant fait auparavent des transparentblt pour apporter de la transparence sur mes buffers...

    Le probleme, c'est que les handle de canvas se desalloue (canvas.handleallocated=false)...

    De plus au bout d'un moment quand j'ecris du texte, rien ne se passe, il ecrit plus rien et ensuite c'est automatique, la recreation de la fenetre (en rajoutant un groupe d'objet par exemple) provoque une exception (plus de handle a alloué), ce qui semble concorder avec le fait que l'on puisse plus ecrire du texte car a force de devoir reallouer les handle pour l'utilisation des API, il semble les avoir tous utilisé...

    Apres deux jours a tourner en rond sur le probleme, je craque, j'ai entre autre essayer de creer manuellement les handle (createcompatibleDC(handle ducanvas de la fenetre))...

    Merci de votre aide,
    Hesitez pas a demander plus d'info si j'ai pas ete tres clair...

  2. #2
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    Est-ce que tu crées beaucoup de handle pour tes canvas ?!!

    Car les DeviceContext (le "DC") utilisent beaucoup de mémoire, et si tu en fais trop c'est peut-être ça qui fait planter ta machine !!

    Il faut se limiter dans l'utilisation de ce genre de ressource... Et surtout ne pas oublier de les libérer, mais apparemment chez toi ça se fait tout seul !

    Enfin, si tu en utilise trop en même temps, c'est possible que ce soit la source de ton problème !

    Bonne prog' !
    Bestiol.
    Mea est trop forte, elle flotte : mea coule pas !

    Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.

    olance.developpez.com
    Servez-vous, profitez, abusez de la FAQ Delphi !!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 43
    Points : 52
    Points
    52
    Par défaut
    Toi, tu as windows 98 non ?

    Sur msdn (et là on dit merci windows !):
    Windows 95/98: TransparentBlt contains a memory leak that can exhaust system resources. To draw a transparent bitmap using BitBlt, see Knowledge Base article Q79212.
    L'article en question est là :
    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q79/2/12.asp&NoWebContent=1

    (le lien que j'ai mis là première fois est faux, c'est pas ma faute, c'est bien sur le site que le lien est HS !)

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Résolu ...

    J'ai trouve ...
    Tout venait d'un acces concurentiel sur le canvas entre 2 threads, juste avec un canvas.textheigth, qui faisait perdre les textes, il suffit donc de faire un canvas.lock... à chaque lecture ou ecriture...

    Rien a voir avec transparentblt, meme si je l'ai code en bas niveau (scanline) pour assuere la compatibilité avec Win NT, c'est un peu plus lent...

    Merci de votre aide..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Des requêtes qui s'effacent toutes seules
    Par Celia1303 dans le forum Access
    Réponses: 2
    Dernier message: 16/12/2005, 15h19
  2. Des "=" qui se mettent tout seuls dans une TLisBox
    Par [Silk] dans le forum Langage
    Réponses: 2
    Dernier message: 11/11/2005, 12h35
  3. Formulaire qui se valide tout seul :8O:
    Par Boumeur dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/04/2005, 12h21
  4. Avoir un champ qui se decremente tout seul
    Par romeo9423 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/02/2005, 04h32
  5. [ContrôleBD] DBCtrlGrid qui se redimensionne tout seul !
    Par LadyWasky dans le forum Composants VCL
    Réponses: 8
    Dernier message: 01/07/2004, 23h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo